目录
CURDATE(), NOW, CURTIME
以上函数均返回当前日期,区别如下
SELECT NOW(), CURDATE(), CURTIME()
结果如下:
TO_DAYS
定义:给定一个日期date,返回一个从年份0开始计算的天数
语法:
TO_DAYS(date)
实例:
SELECT TO_DAYS(NOW()) as days
结果如下:
DATE_SUB
定义:从日期减去指定的时间间隔n,一般为获取n(年/月/日/时/分/秒)之前的时间日期
语法:
DATE_SUB(date, INTERVAL expr type)
其中:
date参数:合法的日期表达式;
expr参数:希望添加的时间间隔
type参数:时间间隔的类型,通常为YEAR/QUARTER/MONTH/WEEK/DAY/HOUR/MINUTE/SECOND
实例:
假如有如下“Orders”表:
OrderId | ProductName | OrderDate | money |
---|---|---|---|
1 | d.d. | 2022-11-4 09:50:44.657 | 10 |
现在我们想获取五天前的数据,即向“OrderDate”减去5天,则可以:
SELECT OrderId, DATE_SUB(OrderDate, INTERVAL 5 DAY) AS SubtractDate
FROM Orders
结果:
OrderId | SubtractDate |
---|---|
1 | 2022-10-30 09:50:44.657 |
想要获取近一个月的数据:
SELECT * FROM Orders WHERE OrderDate >= DATE_SUB(CURDATE(), INTERVAL 1 MONTH)
DATE_FORMAT
定义:用于以不同格式显示日期/时间数据
语法:
DATE_FORMAT(date, format)
其中:
date参数:合法的日期
format参数:规定日期/时间的输出格式
具体可用格式参考:MySQL DATE_FORMAT() 函数 | 菜鸟教程 (runoob.com)
实例:
select
date_format(now(), '%b %d %Y %h:%i:%p') as time1,
date_format(now(),'%m-%d-%Y') as time2
查询前一周内的数据(周一是一周的第一天)
SELECT *
FROM Orders
WHERE DATE_FORMAT(OrderDate, '%u') >= DATE_FORMAT(CURDATE(), '%u') - 1
ORDER BY OrderDate
查询一年中每周的数据
SELECT DATE_FORMAT(OrderDate, '%x年-第%v周') as week, sum(money) as money
FROM Orders
WHERE DATE_FORMAT(OrderDate, '%Y') = 2022
GROUP BY week