datediff,period_diff,timestampdiff

date()-- 返回当前日期(年-月-日)

  • DATEDIFF() 函数返回两个日期之间的天数。
    DATEDIFF(date1,date2)
    date1 和 date2 参数是合法的日期或日期/时间表达式。
    注释:只有值的日期部分参与计算,具体的时间不参与计算
SELECT DATEDIFF('2008-11-30','2008-11-29') AS DiffDate----->1
SELECT DATEDIFF('2008-11-30  23:59:59','2008-11-29 00:00:00')----->1

SELECT DATEDIFF('2008-11-29','2008-11-30') AS DiffDate----->-1
SELECT DATEDIFF('2008-11-29 00:00:00','2008-11-30 23:59:59') AS DiffDate----->-1
  • period_diff()函数返回两个日期之间的月份数
    period_diff(date1,date2)
    date1 和 date2 参数是只能是YYYYMM或YYMM
SELECT PERIOD_DIFF(201901,201801)------------>12
SELECT PERIOD_DIFF(0801,0701)-------------->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, '2018-01-01', '2018-06-01') ;----->5
SELECT TIMESTAMPDIFF(DAY, '2010-01-01', '2010-06-01') ;------>151
SELECT TIMESTAMPDIFF(MINUTE, '2018-01-01 10:00:00', '2018-01-01 10:45:00') ;----->45
SELECT TIMESTAMPDIFF(MINUTE, '2018-01-01 10:00:00', '2018-01-01 10:45:59');----->45
-- 差值应该是45分59秒。 但是,我们将unit参数传递为MINUTE,因此,函数按预期返回45分钟。如果使用SECOND而不是MINUTE,则TIMESTAMPDIFF函数将考虑SECOND部分
SELECT TIMESTAMPDIFF(SECOND, '2018-01-01 10:00:00', '2018-01-01 10:45:59');----->2759

计算大于等于18岁的记录

TIMESTAMPDIFF(YEAR,s2.birthdate,date_format(t.created,'%Y-%m-%d')) > =18

参考链接:
https://www.w3cschool.cn/mysql/func-datediff-mysql.html

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值