sql日期处理需按数据库选函数:mysql用now()、year()、adddate()、str_to_date()等,sql server用getdate()、datepart()、dateadd()、convert()等,语法和参数顺序差异大。

SQL里处理日期时间,核心是选对函数、看清数据库类型、注意格式写法。不同数据库语法差异明显,直接套用容易报错。
获取当前时间的常用写法
MySQL用 NOW() 或 CURRENT_TIMESTAMP(),返回带时分秒的完整时间;CURDATE() 只取日期,CURTIME() 只取时间。
SQL Server 对应的是 GETDATE(),功能等同于 NOW()。
Hive 和部分新版引擎支持 CURRENT_DATE() 和 CURRENT_TIME(),语义更清晰。
提取年月日、时分秒这些字段
MySQL 提供 YEAR()、MONTH()、DAY()、HOUR() 等独立函数,参数传入日期或时间值即可。
SQL Server 更倾向用 DATEPART(yyyy, date) 这类统一接口,datepart 参数支持 year、month、day、hour、minute、second 等。
两者都支持 DATENAME()(SQL Server)或 DAYNAME()(MySQL 8.0+),用于返回“星期三”“January”这类字符串结果。
日期加减和两个日期相减
MySQL 用 ADDDATE(date, INTERVAL n DAY) 或 DATE_ADD(),单位可写 DAY、MONTH、YEAR、HOUR 等。
SQL Server 用 DATEADD(day, n, date),顺序是单位、数值、原日期。
算间隔天数:MySQL 偏好 DATEDIFF('2026-02-28', '2026-02-01')(前减后),SQL Server 是 DATEDIFF(day, '2026-02-01', '2026-02-28')(后减前)。
需要按小时、分钟甚至年份差,MySQL 用 TIMESTAMPDIFF(hour, t1, t2),SQL Server 仍用 DATEDIFF(hour, t1, t2)。
字符串与日期互转、格式化输出
把字符串变日期:MySQL 用 STR_TO_DATE('01/28/2026', '%m/%d/%Y');SQL Server 用 CONVERT(DATE, '2026-02-28') 或 CAST('2026-02-28' AS DATE)。
把日期变字符串:MySQL 用 DATE_FORMAT(NOW(), '%Y年%m月%d日 %H:%i');SQL Server 用 FORMAT(GETDATE(), 'yyyy年MM月dd日 HH:mm')(需 SQL Server 2012+)或传统 CONVERT(varchar, GETDATE(), 120)。
注意:格式符大小写敏感,%Y 是4位年,%y 是2位;%m 是补零月,%c 是不补零月。










