SELECT NOW(); -- 2024-01-15 14:30:45
SELECT CURRENT_TIMESTAMP();
特性:語句執行開始時固定值,同一語句多次調用返回相同結果。
SELECT NOW(), SLEEP(3), NOW(); -- 兩次 NOW() 相同
SELECT SYSDATE(), SLEEP(3), SYSDATE(); -- 相差 3 秒
特性:函數執行時即時取值,適合高精度計時,但會禁用查詢緩存。
CURDATE() / CURRENT_DATE() -- 2024-01-15
CURTIME() / CURRENT_TIME() -- 14:30:45
SELECT UTC_TIMESTAMP(), UTC_DATE(), UTC_TIME(), NOW();
-- UTC 比本地時間(東八區)早 8 小時
SET @dt = '2024-01-15 14:30:45.123456';
SELECT DATE(@dt); -- 2024-01-15
SELECT TIME(@dt); -- 14:30:45.123456
SELECT YEAR(@dt); -- 2024
SELECT QUARTER(@dt); -- 1
SELECT MONTH(@dt); -- 1
SELECT WEEK(@dt); -- 3 (預設模式)
SELECT DAY(@dt); -- 15
SELECT HOUR(@dt); -- 14
SELECT MINUTE(@dt); -- 30
SELECT SECOND(@dt); -- 45
SELECT MICROSECOND(@dt); -- 123456
SELECT EXTRACT(YEAR FROM @dt); -- 2024
SELECT EXTRACT(QUARTER FROM @dt); -- 1
SELECT EXTRACT(MONTH FROM @dt); -- 1
SELECT EXTRACT(WEEK FROM @dt); -- 3
SELECT EXTRACT(DAY FROM @dt); -- 15
SELECT EXTRACT(HOUR FROM @dt); -- 14
SELECT EXTRACT(MINUTE FROM @dt); -- 30
SELECT EXTRACT(SECOND FROM @dt); -- 45
SELECT EXTRACT(MICROSECOND FROM @dt); -- 123456
-- 組合提取
SELECT EXTRACT(YEAR_MONTH FROM @dt); -- 202401
SELECT EXTRACT(DAY_HOUR FROM @dt); -- 1514
SELECT EXTRACT(DAY_MINUTE FROM @dt); -- 151430
SELECT EXTRACT(DAY_SECOND FROM @dt); -- 15143045
SELECT EXTRACT(DAY_MICROSECOND FROM @dt);-- 15143045123456
SET @d = '2024-01-15'; -- 星期一
SELECT DAYOFWEEK(@d); -- 2 (1=Sun, 2=Mon...7=Sat)
SELECT WEEKDAY(@d); -- 0 (0=Mon, 1=Tue...6=Sun)
SELECT DAYNAME(@d); -- 'Monday'
SELECT MONTHNAME(@d); -- 'January'
SELECT WEEK(@d); -- 3 (模式 0)
SELECT WEEK(@d, 3); -- 3 (模式 3,ISO 週)
SELECT WEEKOFYEAR(@d); -- 3 (等同 WEEK(@d,3))
SELECT YEARWEEK(@d); -- 202403
SELECT LAST_DAY('2024-02-01'); -- 2024-02-29 (閏年)
SELECT LAST_DAY('2024-01-15'); -- 2024-01-31
-- 取得當月天數
SELECT DAY(LAST_DAY(NOW())); -- 31
-- 加減 INTERVAL
SELECT DATE_ADD('2024-01-15', INTERVAL 10 DAY); -- 2024-01-25
SELECT DATE_SUB('2024-01-15', INTERVAL 1 MONTH); -- 2023-12-15
SELECT '2024-01-15' + INTERVAL 3 HOUR; -- 2024-01-15 03:00:00
-- 日期差
SELECT DATEDIFF('2024-01-20', '2024-01-15'); -- 5
SELECT TIMESTAMPDIFF(DAY, '2024-01-15', '2024-01-20'); -- 5
SELECT TIMESTAMPDIFF(SECOND, '2024-01-15 00:00:00', NOW()); -- 秒差
-- 字串 → 日期時間
SELECT STR_TO_DATE('2024-01-15 14:30:45', '%Y-%m-%d %H:%i:%s');
-- 日期時間 → 字串
SELECT DATE_FORMAT(NOW(), '%Y年%m月%d日 %H時%i分');
| 符號 | 含義 | 範例 |
|---|---|---|
| %Y | 四位年份 | 2024 |
| %m | 兩位月份 | 01 |
| %d | 兩位日期 | 15 |
| %H | 24制小時 | 14 |
| %i | 分鐘 | 30 |
| %s | 秒 | 45 |
| %f | 微秒 | 123456 |
| %W | 星期名稱 | Monday |
| %M | 月份名稱 | January |