SQLServer中常用日期函数及时间处理技巧

在数据库操作里,处理日期和时间是家常便饭。SQLServer提供了一堆实用的函数,帮咱们轻松搞定日期计算、格式转换和数据分析。这些工具不仅让查询更高效,还能避免手动算错的尴尬。下面我就带大家过一遍最核心的几个函数,配上例子,保证一学就会。

SQLServer中有哪些常用的日期和时间函数

一、获取当前日期和时间

最基础的函数就是捞取系统当前时间了。GETDATE是大家的老朋友,返回带时分秒的完整日期时间。比如SELECT GETDATE会输出像”2026-01-19 17:00:50.123″这样的结果。如果项目要求高精度,可以用SYSDATETIME,它能精确到纳秒级别。GETUTCDATE专门用于获取UTC时间,适合跨时区应用,避免时差问题。简单说,这三个函数是时间处理的起点,几乎每个查询都会用到。

二、日期加减与差值计算

想给日期加几天或减几个月?DATEADD函数就是神器。它接受三个参数:时间单位(比如day、month)、增减数值和原始日期。例如SELECT DATEADD(month, 3, '2026-01-19')会返回2026年4月19日;负数表示减,像DATEADD(day, -7, GETDATE)能算出一周前的日期。另一个关键函数是DATEDIFF,专门算两个日期的差距。比如SELECT DATEDIFF(day, '2026-01-01', GETDATE)会告诉你从新年到现在过了多少天。支持的单位超多,从年到秒都能处理。

三、提取日期各部分信息

有时只关心日期的年、月或日部分,YEAR、MONTH和DAY函数就是为此而生。像SELECT YEAR('2026-01-19')直接返回2026,简单粗暴。更灵活的是DATEPART和DATENAME,前者返回数字(如月份是1-12),后者返回文本(如”January”)。例如SELECT DATEPART(weekday, GETDATE)能知道今天是周几(周日=1,周六=7)。这些函数在报表分组或条件筛选中特别有用。

四、日期格式转换技巧

数据库存的日期格式不一定合咱胃口,这时就得靠CAST和CONVERT来变身。CAST是基础款,比如SELECT CAST(GETDATE AS DATE)能去掉时间部分,只留”2026-01-19″。CONVERT更强大,支持样式代码定制输出:

  • SELECT CONVERT(varchar, GETDATE, 112) → “20260119”(纯数字日期)
  • SELECT CONVERT(varchar, GETDATE, 108) → “17:00:50″(只取时间)

样式代码120还能转成”yyyy-mm-dd hh:mi:ss”格式,方便导出数据。转换时注意格式兼容性,别让无效日期报错。

五、实用工具函数盘点

除了核心函数,SQLServer还藏了些宝藏工具。EOMONTH能自动算某个月的最后一天,比如SELECT EOMONTH('2026-02-01')返回闰年的2月29日。ISDATE函数检查日期是否合法,避免插入错误数据,像SELECT ISDATE('2026-02-30')会返回0(无效)。想生成特定日期?DATEFROMPARTS超省事:SELECT DATEFROMPARTS(2026, 1, 19)直接拼出完整日期。

六、实际应用场景示例

把这些函数组合起来,能解决真实业务问题。比如查最近7天的订单:SELECT * FROM Orders WHERE OrderDate >= DATEADD(day, -7, CAST(GETDATE AS DATE))。算员工年龄也别手动折腾:SELECT DATEDIFF(year, BirthDate, GETDATE)
CASE WHEN DATEADD(year, DATEDIFF(year, BirthDate, GETDATE), BirthDate) > GETDATE THEN 1 ELSE 0 END AS Age
,自动处理闰年逻辑。再比如生成每日报告文件名:SELECT REPLACE(CONVERT(varchar, GETDATE, 112), '-', '') + '.csv',输出”20260119.csv”,省心又专业。

内容均以整理官方公开资料,价格可能随活动调整,请以购买页面显示为准,如涉侵权,请联系客服处理。

本文由星速云发布。发布者:星速云。禁止采集与转载行为,违者必究。出处:https://www.67wa.com/150276.html

(0)
上一篇 2026年1月20日 上午8:33
下一篇 2026年1月20日 上午8:33
联系我们
关注微信
关注微信
分享本页
返回顶部