SQL日期函数详解
一、获取当前日期与时间
MySQL使用NOW()获取当前日期时间,CURDATE()获取当前日期,CURTIME()获取当前时间。
SQL Server使用GETDATE(),并通过CAST转换为日期或时间类型。
-- MySQL示例
SELECT NOW(), CURDATE(), CURTIME();
-- SQL Server示例
SELECT GETDATE(), CAST(GETDATE() AS DATE), CAST(GETDATE() AS TIME);
二、日期提取函数
从日期中提取年、月、日或星期信息。
-- MySQL
SELECT
YEAR('2025-03-15') AS year,
MONTH('2025-03-15') AS month,
DAY('2025-03-15') AS day,
DAYOFWEEK('2025-03-15') AS dow; -- MySQL返回1-7(周日为1)
-- SQL Server
SELECT
YEAR('2025-03-15') AS year,
MONTH('2025-03-15') AS month,
DAY('2025-03-15') AS day,
DATEPART(WEEKDAY, '2025-03-15') AS dow;
-- 获取星期名称
-- MySQL
SELECT DAYNAME('2025-03-15'); -- Saturday
-- SQL Server
SELECT DATENAME(WEEKDAY, '2025-03-15'); -- Saturday
三、日期加减计算
MySQL使用DATE_ADD或DATE_SUB,SQL Server用DATEADD。
-- MySQL
SELECT DATE_ADD('2025-03-15', INTERVAL 10 DAY); -- 2025-03-25
SELECT DATE_SUB('2025-03-15', INTERVAL 10 DAY); -- 2025-03-05
-- SQL Server
SELECT DATEADD(DAY, 10, '2025-03-15'); -- 2025-03-25
SELECT DATEADD(DAY, -10, '2025-03-15'); -- 2025-03-05
四、日期差计算
计算天数差时,MySQL用DATEDIFF,SQL Server用DATEDIFF。
MySQL的TIMESTAMPDIFF可计算月或年差。
-- 天数差
-- MySQL
SELECT DATEDIFF('2025-03-20', '2025-03-15'); -- 5
-- SQL Server
SELECT DATEDIFF(DAY, '2025-03-15', '2025-03-20'); -- 5
-- 月/年差(MySQL)
SELECT
TIMESTAMPDIFF(MONTH, '2024-01-15', '2025-03-15') AS months_diff, -- 14
TIMESTAMPDIFF(YEAR, '2020-03-15', '2025-03-15') AS years_diff; -- 5
五、日期格式化
MySQL用DATE_FORMAT,SQL Server用FORMAT。
格式符略有不同,如年用%Y(MySQL)、yyyy(SQL Server)。
-- 示例:2025-03-15 14:30:25 → 2025年03月15日 14:30:25
-- MySQL
SELECT DATE_FORMAT(NOW(), '%Y年%m月%d日 %H:%i:%s');
-- SQL Server
SELECT FORMAT(GETDATE(), 'yyyy年MM月dd日 HH:mm:ss');
六、日期与字符串转换
字符串转日期时,MySQL用STR_TO_DATE,SQL Server用CONVERT。
日期转字符串时,MySQL用DATE_FORMAT,SQL Server用CONVERT。
-- 字符串 → 日期
-- MySQL
SELECT STR_TO_DATE('2025-03-15', '%Y-%m-%d');
-- SQL Server
SELECT CONVERT(DATE, '2025-03-15', 23); -- 23对应yyyy-mm-dd
-- 日期 → 字符串
-- MySQL
SELECT DATE_FORMAT(NOW(), '%Y%m%d');
-- SQL Server
SELECT CONVERT(VARCHAR, GETDATE(), 112); -- 112对应yyyymmdd
1万+

被折叠的 条评论
为什么被折叠?



