SQL相关时间函数整理

目录

  1. CURDATE(), NOW, CURTIME
  2. TO_DAYS()
  3. DATE_SUB()
  4. DATE_FORMAT()

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”表:

OrderIdProductNameOrderDatemoney
1d.d.2022-11-4 09:50:44.65710

现在我们想获取五天前的数据,即向“OrderDate”减去5天,则可以:

SELECT OrderId, DATE_SUB(OrderDate, INTERVAL 5 DAY) AS SubtractDate
FROM Orders

结果:

OrderIdSubtractDate
12022-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

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页
评论

打赏作者

木铎一心

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值