MySQL日期与时间函数(日期/时间格式化、增减、对比、时区、UTC和UNIX时间)

本文详细介绍了MySQL中的日期与时间函数,包括获取当前时间、时间计算转换、时间增减、时间比较以及时区、UTC时间、UNIX时间戳的处理。重点讲解了DATE_FORMAT、STR_TO_DATE、DATE_ADD等函数的用法,并提供了格式标识符和时间间隔的速查表,帮助读者掌握MySQL时间操作的各种技巧。
摘要由CSDN通过智能技术生成

读完本文,您将掌握MySQL的各类时间函数。
附录提供了格式标识、时间间隔两个速查表,便于日常工作中快速查找。
本文会持续更新、补充,建议您收藏。

更多MySQL函数介绍,可查看《MySQL函数和运算符》

MySQL提供了比较多的、灵活的时间函数,而且基本稳定、已经多个版本不曾修改过了1

获取当前时间

获取当前时间很简单,常用的有CURDATE()/CURTIME()/NOW()三个函数。
下面表格说明了其功能和区别:

功能 推荐函数 同义函数 小数位 效果
获取当前日期 CURDATE() CURRENT_DATE
CURRENT_DATE()
UTC时间参考时区与UTC时间
不支持 默认YYYY-MM-DD
若上下文有数字则返回YYYYMMDD
获取当前时间 CURTIME() CURRENT_TIME
CURRENT_TIME()
UTC时间参考时区与UTC时间
默认无
可传参指定至多6位
CURTIME(3)表示精确到毫秒
默认hh:mm:ss
若上下文有数字则返回hhmmss
获取当前日期+时间 NOW() CURRENT_TIMESTAMP
CURRENT_TIMESTAMP()
LOCALTIME
LOCALTIME()
LOCALTIMESTAMP
LOCALTIMESTAMP()
UTC时间参考时区与UTC时间
默认无
可传参指定至多6位
NOW(3)表示精确到毫秒
默认YYYY-MM-DD hh:mm:ss
若上下文有数字则返回YYYYMMDDhhmmss

上下文有数字,指的是函数前后有数字运算,如我现在执行的CURDATE() + 0返回了20191023

如果对“现在”的定义精确一点:上述函数取的都是SQL开始执行的时间,只是输出格式有所变化。而在存储过程或触发器中,返回的是存储过程或触发器开始执行的时间。

除了上面的函数,MySQL还提供了更细致的“现在”定义:SYSDATE()函数,每一行/每个列数据准备时才获取时间,如下面样例所示:

mysql> SELECT CURDATE(), CURTIME(6), NOW(6), SYSDATE(6) AS 'SYS1', SLEEP(2), SYSDATE(6) AS 'SYS2' FROM sales limit 5;        
+------------+-----------------+----------------------------+----------------------------+----------+----------------------------+
| CURDATE()  | CURTIME(6)      | NOW(6)                     | SYS1                       | SLEEP(2) | SYS2                       |
+------------+-----------------+----------------------------+----------------------------+----------+----------------------------+
| 2019-10-23 | 23:40:29.086893 | 2019-10-23 23:40:29.086893 | 2019-10-23 23:40:29.092738 |        0 | 2019-10-23 23:40:31.092824 |
| 2019-10-23 | 23:40:29.086893 | 2019-10-23 23:40:29.086893 | 2019-10-23 23:40:31.092868 |        0 | 2019-10-23 23:40:33.098602 |
| 2019-10-23 | 23:40:29.086893 | 2019-10-23 23:40:29.086893 | 2019-10-23 23:40:33.098663 |        0 | 2019-10-23 23:40:35.098779 |
| 2019-10-23 | 23:40:29.086893 | 2019-10-23 23:40:29.0868
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值