Appearance
SQL Server 日期与时间函数参考
💡 说明
日期和时间函数是数据分析、报表统计中不可或缺的工具。掌握这些函数可以显著提升 SQL 编写效率,避免在处理时间维度时频繁查阅文档。
1. 系统时间获取
用于获取数据库服务器当前的日期和时间。
| 函数 | 说明 | 示例 |
|---|---|---|
| GETDATE() | 返回当前系统日期和时间 (datetime) | SELECT GETDATE(); |
| GETUTCDATE() | 返回当前 UTC (世界标准时间) | SELECT GETUTCDATE(); |
2. 日期部分提取 (整数值)
用于从日期值中提取特定的数值(如年、月、日)。
2.1 快捷提取函数
- YEAR(d): 返回年份。
- MONTH(d): 返回月份 (1-12)。
- DAY(d): 返回天数 (1-31)。
2.2 通用提取函数 DATEPART(dp, d)
返回指定日期部分的整数值。dp (datepart) 参数可取:year, month, day, dayofyear, week, weekday, hour, minute, second 等。
sql
SELECT
DATEPART(year, GETDATE()) AS YearValue,
DATEPART(month, GETDATE()) AS MonthValue,
DATEPART(day, GETDATE()) AS DayValue;3. 日期部分提取 (字符串值)
3.1 DATENAME(dp, d)
与 DATEPART 类似,但返回的是字符串表示。对于 weekday(星期几),它会返回具体的名称而非数字。
sql
SELECT
DATENAME(weekday, '2026-09-23') AS WeekdayName, -- 返回 'Wednesday' 或 '星期三'
DATENAME(month, '2026-09-23') AS MonthName;4. 日期加减运算
4.1 DATEADD(dp, num, d)
在指定日期上增加或减少一段时间间隔。
- dp: 运算的部分(year, month, day, hour 等)。
- num: 增量(正数为加,负数为减)。
- d: 基准日期。
sql
-- 一年后
SELECT DATEADD(year, 1, GETDATE());
-- 两月前
SELECT DATEADD(month, -2, GETDATE());
-- 两小时后
SELECT DATEADD(hour, 2, GETDATE());5. 综合实操脚本
sql
-- 常用日期函数演示
SELECT
GETDATE() AS [当前时间],
GETUTCDATE() AS [UTC时间],
YEAR('2015-04-30') AS [年],
MONTH('2015-04-30') AS [月],
DAY('2015-04-30') AS [日];
-- 高级部分提取
SELECT
DATENAME(quarter, GETDATE()) AS [当前季度],
DATENAME(week, GETDATE()) AS [当年第几周],
DATENAME(weekday, GETDATE()) AS [星期几];
-- 偏移计算
SELECT
DATEADD(day, 7, GETDATE()) AS [一周后],
DATEADD(month, 1, GETDATE()) AS [下个月今日];🔗 参考资料
