Sql中TO_DAYS,DATE_SUB等时间函数介绍
TO_DAYS
TO_DAYS(date) 给定一个日期date, 返回一个天数(从年份0开始的天数)。
1.获取当天的数据:TO_DAYS(o.gmt_created) = TO_DAYS(NOW())
SELECT
o.id,
o.gmt_created
FROM
`order` o
WHERE
TO_DAYS(o.gmt_created) = TO_DAYS(NOW())
o.gmt_created:数据库中存创建时间的字段,now()表示当前的时间
TO_DAYS(now()): 返回从年份0开始到now()现在的一个天数
获取当前时间
curdate(): 获取当前的年月日
date():提取日期或日期/时间表达式的日期部分
curtime(): 获取当前的时分秒
now(): 获取当前的日期和时间,now()取的是语句开始执行的时间。
sysdate():获取当前的日期和时间,sysdate()取的是动态的实时时间。
DATE_SUB(date,INTERVAL expr type)函数
data:时间
expr:间隔的天数或者年 向前间隔时正数 向后间隔时负数
type:可以是年 月 日
1.订单创建时间提前1天
SELECT
o.id,
o.gmt_created,
DATE_SUB(o.gmt_created,INTERVAL 1 day)
FROM
`order` o
2.订单创建时间推后1天
SELECT
o.id,
o.gmt_created,
DATE_SUB(o.gmt_created,INTERVAL -1 day)
FROM
`order` o
3.订单创建时间提前1个月
SELECT
o.id,
o.gmt_created,
DATE_SUB(o.gmt_created,INTERVAL 1 month)
FROM
`order` o
4.订单创建时间推后1个月
SELECT
o.id,
o.gmt_created,
DATE_SUB(o.gmt_created,INTERVAL -1 month)
FROM
`order` o
5.订单创建时间提前1年
SELECT
o.id,
o.gmt_created,
DATE_SUB(o.gmt_created,INTERVAL 1 year)
FROM
`order` o
5.订单创建时间推后1年
SELECT
o.id,
o.gmt_created,
DATE_SUB(o.gmt_created,INTERVAL -1 year)
FROM
`order` o
DATEDIFF() 函数
datediff() 函数返回两个日期之间的天数。
datediff(startdate,enddate)
startdate 和 enddate 参数是合法的日期表达式。(注意,第二个日期比第一个日期晚,结果将是一个负数)
SELECT
o.id,
o.gmt_created,
o.gmt_issue_ticket,
datediff(NOW(),o.gmt_issue_ticket)
FROM
`order` o
WHERE o.id = 60166359
ADDDATE()函数
ADDDATE(date,INTERVAL expr unit)
当第二个参数是INTERVAL 格式, ADDDATE() 就是DATE_ADD() 的同义词。相关函数SUBDATE() 则是DATE_SUB() 的同义词。对于INTERVAL 参数上的信息介绍如下:
data: 时间
expr: 间隔的天数或者年 向前间隔时正数 向后间隔时负数
unit: 可以是年 月 日等
SELECT
o.id,
o.gmt_created,
adddate(o.gmt_created,INTERVAL 31 day)
FROM
`order` o
WHERE o.id = 60166359
SELECT
o.id,
o.gmt_created,
date_add(o.gmt_created,INTERVAL 31 day)
FROM
`order` o
WHERE o.id = 60166359
ADDDATE(expr,days)
若 days 参数只是整数值,则 MySQL 5.1 将其作为天数值添加至 expr 。
SELECT
o.id,
o.gmt_created,
adddate(o.gmt_created,31)
FROM
`order` o
WHERE o.id = 60166359