在日常使用mysql进行时间操作时经常会使用到的场景是需要得到距当前时间多少值之前的一个时间,如果直接写死一个时间在后续执行的时候要定期修改,非常不灵活,于是了解到了date_sub这个函数,下面通过实际应用场景和案例来了解它。
定义和用法
DATE_SUB() 函数从日期减去指定的时间间隔。
此函数需要搭配其他日期函数一起使用,例如:
curdate():获取当前的年月日
curtime():获取当前的时分秒
now():获取当前的日期和时间
语法
DATE_SUB(date,INTERVAL expr type)
- data:时间
- expr:间隔的天数或者年 向前间隔时正数 向后间隔时负数
- type:可以时年、月、日等
属性基本语法之后我们可以根据实际情况写出一个常用的表达式了,比如我要查询add_time
是否在当前时间的1个月范围内,可以这样写:
from_unixtime(`add_time`,'%Y-%m-%d') between date_sub(curdate(),INTERVAL 1 month) and date_format(now(),'%Y-%m-%d');
以上就是date_sub
一个比较简单的使用场景,如果还有更多复杂的需求还原在评论区讨论。
备注:
- from_unixtime:时间戳转换函数,将 Unix 时间戳转换并根据 format 字符串格式化。
- between:between关键字是一个逻辑操作符用来筛选指定属性或表达式某一范围内或范围外的数据。between关键字常用在where关键字后与select或update或delete共同使用。between的使用语法如下:
expr [NOT] BETWEEN begin_expr AND end_expr;