日期时间函数
掌握日期计算、格式化、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());