Skip to content

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 [下个月今日];

🔗 参考资料

方舟 · Ark