DATE:格式 YYYY-MM-DD
,仅存储日期。
TIME:格式 HH:MM:SS
,仅存储时间。
DATETIME:格式 YYYY-MM-DD HH:MM:SS
,存储日期和时间。
TIMESTAMP:与 DATETIME
类似,但受时区影响,范围较小(1970-2038)。
YEAR:存储年份(4位或2位格式)。
SELECT NOW();
SELECT SYSDATE(); -- 语句执行时刻的时间
SELECT CURDATE();
SELECT CURRENT_DATE();
SELECT CURTIME(); SELECT CURRENT_TIME();
SELECT YEAR('2023-10-05'); -- 2023
SELECT MONTH('2023-10-05'); -- 10
SELECT DAY('2023-10-05'); -- 5
SELECT HOUR('14:30:00'); -- 14
SELECT MINUTE('14:30:00'); -- 30
SELECT SECOND('14:30:00'); -- 0
SELECT DAYNAME('2023-10-05'); -- Thursday
SELECT MONTHNAME('2023-10-05');-- October
SELECT WEEK('2023-10-05'); -- 第40周(默认周日为周首)
SELECT EXTRACT(YEAR_MONTH FROM '2023-10-05'); -- 202310
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s'); -- 2023-10-05 14:30:00
%Y
:4位年份
%m
:两位月份(01-12)
%d
:两位日期
%H
:24小时制小时
%i
:分钟
更多符号参考官方文档。
SELECT STR_TO_DATE('05-10-2023', '%d-%m-%Y'); -- 2023-10-05
SELECT DATE_ADD('2023-10-05', INTERVAL 1 DAY); -- 加1天 → 2023-10-06 SELECT DATE_SUB('2023-10-05', INTERVAL 1 MONTH);-- 减1月 → 2023-09-05 -- 简写: SELECT '2023-10-05' + INTERVAL 1 WEEK; SELECT '2023-10-05' - INTERVAL 1 YEAR;
SELECT DATEDIFF('2023-10-05', '2023-10-01'); -- 天数差 → 4 SELECT TIMEDIFF('14:30:00', '12:00:00'); -- 时间差 → 02:30:00 SELECT TIMESTAMPDIFF(YEAR, '2000-10-05', CURDATE()); -- 年龄计算 → 23
SELECT LAST_DAY('2023-10-05'); -- 当月最后一天 → 2023-10-31
SELECT ADDDATE('2023-10-05', 7); -- 默认加天数 → 2023-10-12
SELECT * FROM orders WHERE order_date = CURDATE();
SELECT * FROM logs
WHERE log_time >= DATE_SUB(NOW(), INTERVAL 7 DAY);
SELECT MONTH(order_date), COUNT(*) FROM orders GROUP BY MONTH(order_date);
-- 低效(索引可能失效): SELECT * FROM sales WHERE YEAR(sale_date) = 2023; -- 高效(利用索引): SELECT * FROM sales WHERE sale_date BETWEEN '2023-01-01' AND '2023-12-31';
SELECT UNIX_TIMESTAMP('2023-10-05 14:30:00'); -- 转换为秒级时间戳
SELECT FROM_UNIXTIME(1696523400); -- 时间戳转日期 → 2023-10-05 14:30:00
SELECT CONVERT_TZ(NOW(), 'UTC', 'Asia/Shanghai'); -- 转换时区