当前位置: 首页 > news >正文

sqlserver 主要的日期函数及用法示例

SQL Server 主要日期函数及用法示例

1. 获取当前日期和时间

sql
SELECT GETDATE() AS CurrentDateTime,           -- 当前日期时间GETUTCDATE() AS CurrentUTCDateTime,     -- 当前UTC时间SYSDATETIME() AS SystemDateTime,        -- 更高精度的系统时间CURRENT_TIMESTAMP AS CurrentTimestamp;  -- ANSI SQL标准写法

2. 日期部分提取

sql
SELECT YEAR(GETDATE()) AS YearPart,MONTH(GETDATE()) AS MonthPart,DAY(GETDATE()) AS DayPart,DATEPART(YEAR, GETDATE()) AS YearUsingDatepart,DATEPART(QUARTER, GETDATE()) AS Quarter,DATEPART(WEEK, GETDATE()) AS WeekNumber,DATEPART(WEEKDAY, GETDATE()) AS Weekday,DATEPART(HOUR, GETDATE()) AS HourPart,DATEPART(MINUTE, GETDATE()) AS MinutePart;

3. 日期加减计算

sql
SELECT -- 加减天数DATEADD(DAY, 1, GETDATE()) AS Tomorrow,DATEADD(DAY, -1, GETDATE()) AS Yesterday,-- 加减月份DATEADD(MONTH, 1, GETDATE()) AS NextMonth,DATEADD(MONTH, -1, GETDATE()) AS LastMonth,-- 加减年份DATEADD(YEAR, 1, GETDATE()) AS NextYear,DATEADD(YEAR, -1, GETDATE()) AS LastYear,-- 加减小时DATEADD(HOUR, 2, GETDATE()) AS TwoHoursLater;

4. 日期差异计算

sql
DECLARE @StartDate DATETIME = '2023-01-01';
DECLARE @EndDate DATETIME = '2023-12-31';SELECT DATEDIFF(DAY, @StartDate, @EndDate) AS DaysDifference,DATEDIFF(MONTH, @StartDate, @EndDate) AS MonthsDifference,DATEDIFF(YEAR, @StartDate, @EndDate) AS YearsDifference,DATEDIFF(WEEK, @StartDate, @EndDate) AS WeeksDifference,DATEDIFF(HOUR, @StartDate, @EndDate) AS HoursDifference;

5. 日期格式转换

sql
SELECT -- 转换为字符串CONVERT(VARCHAR, GETDATE(), 120) AS Format_120,      -- yyyy-mm-dd hh:mi:ssCONVERT(VARCHAR, GETDATE(), 112) AS Format_112,      -- yyyymmddCONVERT(VARCHAR, GETDATE(), 23) AS Format_23,        -- yyyy-mm-ddCONVERT(VARCHAR, GETDATE(), 101) AS Format_101,      -- mm/dd/yyyyCONVERT(VARCHAR, GETDATE(), 103) AS Format_103,      -- dd/mm/yyyy-- 格式化为更友好的格式FORMAT(GETDATE(), 'yyyy-MM-dd') AS FormattedDate1,FORMAT(GETDATE(), 'dd/MM/yyyy HH:mm:ss') AS FormattedDate2,FORMAT(GETDATE(), 'MMMM dd, yyyy') AS FormattedDate3;

6. 日期部分获取和设置

sql
SELECT -- 获取日期名称DATENAME(YEAR, GETDATE()) AS YearName,DATENAME(MONTH, GETDATE()) AS MonthName,DATENAME(WEEKDAY, GETDATE()) AS WeekdayName,-- 从日期创建新日期DATEFROMPARTS(2023, 12, 25) AS Christmas2023,DATETIMEFROMPARTS(2023, 12, 25, 18, 30, 0, 0) AS ChristmasTime,-- 获取月份的第一天和最后一天DATEFROMPARTS(YEAR(GETDATE()), MONTH(GETDATE()), 1) AS FirstDayOfMonth,EOMONTH(GETDATE()) AS LastDayOfMonth,EOMONTH(GETDATE(), 1) AS LastDayOfNextMonth;

7. 日期验证和判断

sql
SELECT -- 检查日期有效性ISDATE('2023-02-29') AS IsValidDate1,  -- 0 (2023不是闰年)ISDATE('2024-02-29') AS IsValidDate2,  -- 1 (2024是闰年)-- 判断工作日(需要自定义逻辑)CASE WHEN DATEPART(WEEKDAY, GETDATE()) IN (1, 7) THEN 'Weekend'ELSE 'Weekday'END AS DayType;

8. 实用日期查询示例

sql
-- 查询今天的数据
SELECT * FROM Orders WHERE CAST(OrderDate AS DATE) = CAST(GETDATE() AS DATE);-- 查询最近7天的数据
SELECT * FROM Orders 
WHERE OrderDate >= DATEADD(DAY, -7, CAST(GETDATE() AS DATE))AND OrderDate < DATEADD(DAY, 1, CAST(GETDATE() AS DATE));-- 查询本月的数据
SELECT * FROM Orders 
WHERE OrderDate >= DATEFROMPARTS(YEAR(GETDATE()), MONTH(GETDATE()), 1)AND OrderDate < DATEADD(MONTH, 1, DATEFROMPARTS(YEAR(GETDATE()), MONTH(GETDATE()), 1));-- 计算年龄
SELECT DATEDIFF(YEAR, BirthDate, GETDATE()) - CASE WHEN DATEADD(YEAR, DATEDIFF(YEAR, BirthDate, GETDATE()), BirthDate) > GETDATE() THEN 1 ELSE 0 END AS Age
FROM Employees;

9. 时间部分操作

sql
SELECT -- 获取时间部分CAST(GETDATE() AS TIME) AS TimePart,-- 设置特定时间DATEADD(HOUR, 9, CAST(CAST(GETDATE() AS DATE) AS DATETIME)) AS Today9AM,-- 计算时间差(分钟)DATEDIFF(MINUTE, '09:00', '17:30') AS WorkMinutes;

这些函数涵盖了 SQL Server 中日期时间处理的主要场景,可以根据具体需求选择合适的函数组合使用。

 
 
 
 
 
 
 
 
 
 
http://www.hskmm.com/?act=detail&tid=36064

相关文章:

  • ICPC2022沈阳 游记(VP)
  • 大数据分析基础及应用案例:第四周学习报告——线性回归模型
  • 「LG7446-rfplca」题解
  • 图论刷题记录
  • 「LG6596-How Many of Them」题解
  • 骗我呢
  • 手写体识别
  • 你好,我是肆闲:C语言的学习,成长与分享旅程
  • AGC 合集 1.0
  • 20231302邱之钊密码系统设计实验一第二
  • 深入BERT内核:用数学解密掩码语言模型的工作原理
  • ZR 2025 NOIP 二十连测 Day 6
  • 20251021
  • [论文笔记] Precision-Guided Context Sensitivity for Pointer Analysis
  • 英语_备忘_疑难
  • 数学题刷题记录(数学、数论、组合数学)
  • 朋友圈文案不会写?这个AI指令可能帮得上忙
  • 「JOISC2020-掃除」题解
  • 结对作业
  • CF简单构造小计
  • 深入认识ClassLoader - 一次投产失败的复盘
  • python 包来源镜像
  • CSharp基础复习-1
  • Linux7种文件类型
  • 米理 课程描述/学习计划/Study program
  • 2025年线路调压器厂家推荐榜:10kv线路调压器/单相线路调压器/三相线路调压器/助力电网稳定运行,优选品牌指南
  • Day15
  • 2025 智能/商超照明/灯具/灯光/源头厂家推荐榜:上海富明阳凭分区域光效领跑,生鲜 / 百货场景适配优选
  • 2025 艺考文化课推荐榜:济南震华学校 5 星领跑,全阶段体系适配基础补弱到高分冲刺
  • 2025 广州人力资源/派遣/劳务外包/人事代理/推荐榜:精典人才凭派遣合规 + 全场景适配领跑,企业用工优选