一、计算两个日期的相隔月份
格式: PERIOD_DIFF(startDate,endDate) 返回结果为月份数,格式必须是连续的数字,否则计算的结果可能会出错。
SELECT PERIOD_DIFF(201710, 201703);
如果小月份放前面,那么返回负数-1
二、计算2个日期的相隔天数
格式: DATEDIFF(date1,date2);
select DATEDIFF(date1,date2);
其中date1>date2:
MySQL
自带的
日期
函数TIMESTAMPDIFF
计算
两个
日期
相
差
的秒数、分钟数、小时数、
天数
、周数、季度数、月数、年数,当前
日期
增加或者减少一天、一周等等。
SELECT TIMESTAMPDIFF(类型,开始时间,结束时间)
相
差
的秒数:
SELECT TIMESTAMPDIFF(SECOND,'1993-03-23 00:00:00',DATE_FORMAT(NO...
select datediff(year, 开始
日期
,结束
日期
); --两
日期
间隔年
select datediff(quarter, 开始
日期
,结束
日期
); --两
日期
间隔季
select dated...
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].GetMonth') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
DROP FUNCTION [dbo].GetMonth
create function GetMonth (@stad
获取两个
日期
的
月份
差
,如果仅仅是比较
月份
,需要把
日期
都调整到同一天(例如当月1日),不然会出现问题
select TIMESTAMPDIFF(MONTH,'2018-10-31', '2018-11-30');
期望结果是1,但是运行得到0。
可以都调整到每月第一天
TIMESTAMPDIFF(MONTH,concat(left(loan_date,7),'-01'), concat(left(data_date,7),'-01')
格式: (p1,p2),返回周期P1和P2之间的月数。 P1和P2的格式应为YYMM或YYYYMM。 请注意,期间参数P1和P2不是
日期
值。
如果把小
月份
放到前面,那么结果会为负数
计算
两个
日期
相隔的
天数
第一种方法
第二种方法
日期
转字符串
ZoneDateTime转换为字符串
MYSQL
的TIMESTAMPDIFF方法
MySQL
自带的
日期
函数
计算
两个
日期
相
差
的秒数、分钟数、小时数、
天数
、周数、季度数、月数、年数,当前
日期
增加或者减少一天、一周等等。
相
差
的秒数
例如是否相
差
大于等于15秒
MySQL
中可以通过DATEDIFF()函数
计算
两个
日期
之间的
天数
差
。
但是要
计算
两个
日期
之间的
月份
差
,比较麻烦,需要考虑到每个月的
天数
不同,还可能出现跨年的情况。
以下是一种
计算
方法:
首先,将
日期
转换为年和月的形式,例如2019年3月可以表示为201903。
然后,对两个
日期
的年和月数进行相减,得到一个绝对值。
最后,根据两个
日期
的
天数
关系,对得到的
差
值进行微调。例如如果第一个
日期
是1月31日,第二个
日期
是2月1日,则
月份
差
应该是1而不是0。
具体实现可以参考下面的SQL语句:
SELECT ABS(YEAR(date1) * 12 + MONTH(date1) - YEAR(date2) * 12 - MONTH(date2)) - IF(DAY(date1) <= DAY(date2), 0, 1) AS month_diff FROM table_name;
其中,date1和date2是需要
计算
的两个
日期
,table_name是数据表的名称。
这样就可以在
MySQL
中
计算
两个
日期
之间的
月份
差
了。
static326: