欢迎您访问我的笔记本站旨在于记录一些平时工作中遇到的一些问题和解决方法,方便查阅,部分内容来源于网络,如有侵权请联系我删除
  • 微信微信
您现在的位置是:首页 > Mysql

Mysql TIMESTAMPDIFF函数-[原创]

日期:2019-10-09 16:47:12 作者:tanyi 来源:我的笔记 浏览:1225 次
很多时候我们需要查询一些指定时间条件的数据,比如已过期的商品,即将过期的订单记录等等,这个时候mysql有一个函数个人觉得非常实用,这就是TIMESTAMPDIFF

TIMESTAMPDIFF(unit,begin,end);

该函数有三个参数。

unit:可以理解为end和begin做比较后取值的单位,比如DAY,SECOND,MINUTE等,它还有其他值(MICROSECOND,HOUR,WEEK,YEAR)。

后面两个参数和字面意思差不多,一个开始时间一个结束时间,运算结果是由结束时间减去开始时间所得,时间格式允许混合出现,比如begin是时间戳,end可以为格式化的时间。

这里我以我实际项目用到的地方举个简单例子,公司需求是要查出即将过期和已过期的服务器数据,距离过期还剩3天的视为即将过期,那么思路就是用表里面过期的时间减去现在的时间得到一个时间差,如果这个时间差小于零说明已经过期,如果小于3天,或者更精确,小于259200秒(3天的总时间秒数为:259200),并且大于零,那么这些数据视为即将过期,那么我们sql语句可以这样写。

查询已过期的数据,当然一般过期会专门用一个字段标识,我这里只是演示可以这样去查的一个思路 NOW()为当前时间。(expiration_time:表中过期时间字段,值的格式为,y-m-d H:i:s,如:2019-10-10 10:10:10)

select * from demo where TIMESTAMPDIFF(SECOND,NOW(),expiration_time)<0  //精确到秒,查询已过期数据


查询即将过期数据:

select * from demo where TIMESTAMPDIFF(SECOND,NOW(),expiration_time)>0 and TIMESTAMPDIFF(SECOND,NOW(),expiration_time)<259200


提交评论
评论列表