MySQL中的DATEDIFF()、PERIOD_DIFF()和TIMESTAMPDIFF()函数使用

DATEDIFF() 函数返回两个日期之间的天数

  • 用法:DATEDIFF(date1,date2)

date1 和 date2 参数是合法的日期或日期/时间表达式。
注意:只有值的日期部分参与计算,具体的时间不参与计算,计算两个日期之间的天数要用DATEDIFF不能用period_diff

  • 案例:
SELECT DATEDIFF('2021-10-01','2021-09-30') AS DiffDate  ----->1
SELECT DATEDIFF('2021-10-01  23:59:59','2021-09-30 00:00:00')  ----->1

SELECT DATEDIFF('2021-09-30','2021-10-01') AS DiffDate	----->-1
SELECT DATEDIFF('2021-09-30 00:00:00','2021-10-01 23:59:59') AS DiffDate	----->-1
-- 查找创建时间为昨天的数据
SELECT * FROM pay_billing WHERE DATEDIFF(date_format(now(), '%Y%m%d') , date_format(create_time, '%Y%m%d' )) =1

PERIOD_DIFF()函数返回两个日期之间的月份数

  • 用法:PERIOD_DIFF(date1,date2)

date1 和 date2 参数是只能是YYYYMM或YYMM

  • 案例:
SELECT PERIOD_DIFF(202101,202001)	------------>12
SELECT PERIOD_DIFF(2101,2001)	-------------->12

TIMESTAMPDIFF() 更加强大,可计算年,月等

  • 用法:TIMESTAMPDIFF(unit,begin,end);

TIMESTAMPDIFF函数返回end-begin的结果,其中begin和end是DATE或DATETIME表达式。
TIMESTAMPDIFF函数允许其参数具有混合类型,例如,begin是DATE值,end可以是DATETIME值。 如果使用DATE值,则TIMESTAMPDIFF函数将其视为时间部分为“00:00:00”的DATETIME值。
unit参数是确定(end-begin)的结果的单位,表示为整数。 以下是有效单位:

MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
  • 案例:
SELECT TIMESTAMPDIFF(MONTH, '2021-01-01', '2021-06-01') ;		----->5
SELECT TIMESTAMPDIFF(DAY, '2020-01-01', '2020-06-01') ;		------>152
SELECT TIMESTAMPDIFF(MINUTE, '2021-10-01 10:01:00', '2021-10-01 10:45:00');		----->44
SELECT TIMESTAMPDIFF(SECOND, '2021-10-01 10:00:00', '2021-10-01 10:45:59');		----->45
-- 差值应该是45分59秒。 但是,我们将unit参数传递为MINUTE,因此,函数按预期返回45分钟。如果使用SECOND而不是MINUTE,则TIMESTAMPDIFF函数将考虑SECOND部分
SELECT TIMESTAMPDIFF(SECOND, '2021-10-01 10:00:00', '2021-10-01 10:45:59');		----->2759
-- 查找最近一周的记录
SELECT * FROM `pay_billing` where TIMESTAMPDIFF(WEEK,create_time,date_format(now(),'%Y-%m-%d'))=0

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

共饮一杯无

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值