MySQL 的時間函數有哪些?如何使用?
在 MySQL中,提供了很多日期和時間函數,那么,在實際工作中,我們該如何選擇?這篇文章,我們一起來聊一聊。
從整體上看,MySQL的日期和時間函數可以分為六大類:獲取當前日期和時間、提取日期和時間的特定部分、格式化日期和時間、日期和時間的算術操作、提取日期的部分和Unix 時間戳相關函數等。
1. 獲取當前日期和時間
獲取當前日期和時間的函數包含以下幾個常用函數:
(1) NOW() / CURRENT_TIMESTAMP
作用:返回當前的日期和時間。
示例:
SELECT NOW();
-- 輸出格式例如:2025-01-05 14:30:00
(2) CURDATE() / CURRENT_DATE
作用:返回當前的日期。
示例:
SELECT CURDATE();
-- 輸出格式例如:2025-01-05
(3) CURTIME() / CURRENT_TIME
作用:返回當前的時間。
示例:
SELECT CURTIME();
-- 輸出格式例如:14:30:00
2. 提取日期和時間的特定部分
提取日期和時間的特定部分的常用函數包含以下幾個:
(1) YEAR(date)
作用:提取年份。
示例:
SELECT YEAR('2025-01-25');
-- 輸出:2023
(2) MONTH(date)
作用:提取月份。
示例:
SELECT MONTH('2025-01-25');
-- 輸出:10
(3) DAY(date)
作用:提取日期中的天。
示例:
SELECT DAY('2025-01-25');
-- 輸出:5
(4) HOUR(time)、MINUTE(time)、SECOND(time)
作用:分別提取時間中的小時、分鐘和秒。
示例:
SELECT HOUR('14:30:00'), MINUTE('14:30:00'), SECOND('14:30:00');
-- 輸出:14 30 00
3. 格式化日期和時間
格式化日期和時間的常用函數包含以下幾個:
(1) DATE_FORMAT(date, format)
作用:按照指定格式格式化日期/時間。
常用格式符:
- %Y 年份(四位)
- %m 月份(兩位)
- %d 日(兩位)
- %H 小時(24小時制)
- %i 分鐘
- %s 秒
示例:
SELECT DATE_FORMAT(NOW(), '%Y年%m月%d日 %H:%i:%s');
-- 輸出格式例如:2025年01月15日 14:30:00
(2) STR_TO_DATE(string, format)
作用:將字符串按照指定格式轉換為日期/時間類型。
示例:
SELECT STR_TO_DATE('15-01-2025', '%d-%m-%Y');
-- 輸出:2025-01-25
4. 日期和時間的算術操作
(1) DATE_ADD(date, INTERVAL expr unit)
作用:在日期上添加指定的時間間隔。
示例:
SELECT DATE_ADD('2025-01-15', INTERVAL 10 DAY);
-- 輸出:2025-01-25
(2) DATE_SUB(date, INTERVAL expr unit)
作用:從日期中減去指定的時間間隔。
示例:
SELECT DATE_SUB('2025-03-25', INTERVAL 2 MONTH);
-- 輸出:2025-01-25
(3) DATEDIFF(date1, date2)
作用:返回兩個日期之間的天數差異。
示例:
SELECT DATEDIFF('2025-01-25', '2025-01-15');
-- 輸出:10
(4) TIMESTAMPDIFF(unit, datetime1, datetime2)
作用:返回兩個日期之間指定單位的差異。
單位包括:SECOND、MINUTE、HOUR、DAY、MONTH、YEAR 等。
示例:
SELECT TIMESTAMPDIFF(DAY, '2025-01-15', '2025-01-25');
-- 輸出:10
SELECT TIMESTAMPDIFF(HOUR, '2025-01-25 10:00:00', '2025-01-25 14:30:00');
-- 輸出:4
5. 提取日期的部分
(1) EXTRACT(part FROM date)
作用:提取日期或時間的特定部分。
可提取部分:YEAR、MONTH、DAY、HOUR、MINUTE、SECOND 等。
示例:
SELECT EXTRACT(YEAR FROM '2025-01-25'), EXTRACT(MONTH FROM '2025-01-25');
-- 輸出:2025 01
6. Unix 時間戳相關函數
(1) UNIX_TIMESTAMP()
作用:返回當前時間的 Unix 時間戳(秒數)。
示例:
SELECT UNIX_TIMESTAMP();
-- 輸出:例如 1696453800
(2) FROM_UNIXTIME(unix_timestamp, format)
作用:將 Unix 時間戳轉換為日期和時間格式。
示例:
SELECT FROM_UNIXTIME(1696453800, '%Y-%m-%d %H:%i:%s');
-- 輸出:2025-01-25 14:30:00
7. 總結
本文我們分析了 MySQL 中常用的日期和時間函數,它們在日常工作中有廣泛的使用,不過在使用中我們需要注意以下兩點:
- 日期格式:確保日期和時間的格式符合 MySQL 的標準格式(如 YYYY-MM-DD 或 YYYY-MM-DD HH:MM:SS),否則可能導致函數解析錯誤。
- 時區設置:NOW() 和相關函數受服務器時區設置影響,確保時區配置正確以獲取準確的時間。