Z
ZHANK
函数与计算

日期时间函数

掌握日期计算、格式化、DATE_ADD/DATEDIFF/NOW

日期时间函数

日期计算在报表、统计中非常常用。SQLite 和 MySQL 的日期函数有差异,这里以 SQLite 为主,标注 MySQL 写法。

学完本章你将: 掌握当前时间、日期计算、格式化。


获取当前时间

sql
-- SQLite
SELECT DATE('now');          -- 当前日期: 2024-07-22
SELECT TIME('now');          -- 当前时间
SELECT DATETIME('now');      -- 日期+时间

-- MySQL 等效
-- SELECT CURDATE(), CURTIME(), NOW();

日期计算

sql
-- 加减天数
SELECT DATE('now', '+7 days');        -- 7天后
SELECT DATE('now', '-1 month');       -- 1个月前
SELECT DATE('now', '+1 year');        -- 1年后

-- 两个日期的差(天数)
SELECT JULIANDAY('2024-12-31') - JULIANDAY('2024-01-01') AS days;

-- MySQL 写法
-- SELECT DATE_ADD(NOW(), INTERVAL 7 DAY);
-- SELECT DATEDIFF('2024-12-31', '2024-01-01');

格式化

sql
-- SQLite 用 strftime
SELECT STRFTIME('%Y年%m月%d日', 'now');       -- 2024年07月22日
SELECT STRFTIME('%H:%M', 'now');              -- 14:30
SELECT STRFTIME('%Y-%m-%d %H:%M:%S', 'now'); -- ISO 格式

-- MySQL
-- SELECT DATE_FORMAT(NOW(), '%Y年%m月%d日');

提取日期部分

sql
-- SQLite
SELECT STRFTIME('%Y', 'now') AS 年,
       STRFTIME('%m', 'now') AS 月,
       STRFTIME('%d', 'now') AS 日;

-- MySQL
-- SELECT YEAR(NOW()), MONTH(NOW()), DAY(NOW());