mysql日期函数整理,日期时间计算、日期时间格式化与转换、日期时间差值

获取当前日期和时间的函数‌

NOW():返回当前的日期和时间,例如

SELECT NOW() 
--
2025-01-10 16:43:40

CURRENT_DATE():返回当前的日期

SELECT CURRENT_DATE()
--
2025-01-10

CURRENT_TIME():返回当前的时间

CURRENT_DATE():返回当前的日期
```sql
SELECT CURRENT_TIME()
--
16:45:00

SYSDATE():返回服务器的当前日期和时间,与NOW()的区别在于SYSDATE()在执行过程中如果经过了一定时间,返回的时间会变化,而NOW()返回的是执行时刻的时间。‌

SELECT SYSDATE()
--
2025-01-10 16:45:54

日期格式化‌函数‌

DATE_FORMAT()函数可以将日期时间格式化为指定的字符串格式

SELECT DATE_FORMAT('2025-01-10 22:37:45', '%Y-%m-%d %H:%i:%s')
--
2025-01-10 22:37:45

格式化选项包括:%Y 表示四位年份,%m 表示月份,%d 表示日,%H 表示小时(24小时制),%i 表示分钟,%s 表示秒等。‌‌

字符串日期转换‌函数

STR_TO_DATE()函数可以将字符串转换为日期。

SELECT STR_TO_DATE('2025-01-10 22:37:45', '%Y-%m-%d %H:%i:%s')
--
2025-01-10 22:37:45

提取年月日时分秒

SELECT YEAR('2021-01-06 07:08:08') union  ALL
SELECT MONTH('2021-01-06 07:08:08') union ALL
SELECT DAY('2021-01-06 07:08:08') union ALL
SELECT HOUR('2021-01-06 07:08:08') union ALL
SELECT MINUTE('2021-01-06 07:08:08') union  ALL
SELECT SECOND('2021-01-06 07:08:08')  
--
2021
1
6
7
8
8

日期间隔计算‌函数

日期加减计算

DATE_ADD()和DATE_SUB()函数可以用来增加或减少日期时间。

SELECT DATE_ADD(NOW(), INTERVAL 2 DAY)
--
2025-01-12 16:49:50
--
SELECT DATE_ADD(NOW(), INTERVAL 2 MINUTE)
--
2025-01-10 16:52:26
--
SELECT DATE_ADD(NOW(), INTERVAL 2 HOUR)
--
2025-01-10 18:50:54
--
SELECT DATE_SUB(NOW(), INTERVAL 2 MONTH)
--
2024-11-10 16:51:32

日期时间差额计算

DATEDIFF()函数计算两个日期之间的天数差异

SELECT DATEDIFF('2025-01-06', '2025-01-02')
--
4

TIMEDIFF()函数计算时间差异

SELECT TIMEDIFF('2025-01-06 08:08:08', '2025-01-06 09:00:00')
--
-00:51:52

TIMESTAMPDIFF()自定义单位计算时间差
秒:

SELECT TIMESTAMPDIFF(SECOND,'2025-01-06 07:08:08', '2025-01-06 09:00:00')
--
6712

分钟:

SELECT TIMESTAMPDIFF(MINUTE,'2025-01-06 07:08:08', '2025-01-06 09:00:00')
--
11

小时:

SELECT TIMESTAMPDIFF(HOUR,'2025-01-06 07:08:08', '2025-01-06 09:00:00')
--
1

其他单位如天、月、年等都可自定义

时间戳

SELECT UNIX_TIMESTAMP('2021-01-06 07:08:08.11')*1000
---
1609888088110