1、对SQL Server 日期函数的应用,本文主要的内容是如何获取下面的相关日期
本周星期一 | 本月第一天 | 本季度第一天 | 本年第一天 |
本周第一天 | 本月最后一天 | 本季度最后一天 | 本年最后一天 |
本周最后一天 | 上月第一天 | 下季度第一天 | 去年第一天 |
本月的第一个星期一 | 上月最后一天 | 下季度最后第一天 | 去年最后一天 |
当前日期是当月的第几周 | 下月第一天 | 上季度第一天 | 下年第一天 |
当月的最后一天是当月的第几周 | 下月最后一天 | 下季度第一天 | 下年最后一天 |
获取月份的英文缩写 | 去年同一天 |
1、若想先了解常用日期函数的语法与描述等,可点击 此处
2、获取以上表格的日期,可参考以下 SQL 语句
-- 注:DATEDIFF(month, 0, GETDATE())是计算当前日期和“1900-01-01 00:00:00.000”这个日期之间的月数
-- 本周星期一
SELECT DATEADD(wk,DATEDIFF(wk,0,GETDATE()),0)
-- 本周第一天
SELECT DATEADD(wk,DATEDIFF(wk,0,GETDATE()),0)
-- 本周最后一天
SELECT DATEADD(wk,DATEDIFF(wk,0,GETDATE())+1,-1)
-- 本月的第一个星期一
SELECT DATEADD(wk, DATEDIFF(wk,0,dateadd(dd,6-DATEPART(day,GETDATE()),GETDATE())), 0)
-- 本月第一天
SELECT DATEADD(month,DATEDIFF(month,0,GETDATE()),0)
-- 本月最后一天
SELECT EOMONTH (GETDATE())
SELECT DATEADD(ms,-2,DATEADD(mm, DATEDIFF(m,0,GETDATE())+1, 0))
SELECT DATEADD(month, DATEDIFF(month, 0, DATEADD(month, 1, GETDATE())), -1)
SELECT DATEADD(day,-1,convert(varchar(7),DATEADD(month,1,GETDATE()),120)+'-01')
-- 上月第一天
SELECT DATEADD(month, DATEDIFF(month, 0, GETDATE())-1, 0)
-- 上月最后一天
SELECT EOMONTH (GETDATE(),-1)
SELECT DATEADD(day,-day(GETDATE()),GETDATE())
SELECT DATEADD(ms,-2,DATEADD(mm, DATEDIFF(month,0,GETDATE()), 0))
-- 下月第一天
SELECT convert(varchar(7),DATEADD(month,1,GETDATE()),120)+'-01'
SELECT DATEADD(month, DATEDIFF(month, 0, DATEADD(month, 1, GETDATE())), 0)
-- 下月最后一天
SELECT EOMONTH (GETDATE(),1)
-- 本季度第一天(qq 是 quarter)
SELECT DATEADD(qq,DATEDIFF(qq,0,GETDATE()),0)
SELECT CONVERT(char(8),DATEADD(month,DATEPART(qq,GETDATE())*3-month(GETDATE())-2,GETDATE()),120)+'01'
-- 本季度最后一天
SELECT DATEADD(qq, DATEDIFF(qq, 0, GETDATE())+1, -1)
SELECT DATEADD(qq,DATEDIFF(qq,0,DATEADD(qq,1,GETDATE())),-1)
-- 上个季度第一天
SELECT DATEADD(qq, DATEDIFF(qq, 0, GETDATE())-1, 0)
-- 上个季度最后一天
SELECT DATEADD(qq, DATEDIFF(qq, 0, GETDATE()), -1)
-- 下个季度第一天
SELECT DATEADD(qq,DATEDIFF(qq,-1,GETDATE()),0)
-- 下个季度最后第一天
SELECT DATEADD(qq,DATEDIFF(qq,-1,GETDATE())+1,-1)
-- 本年第一天
SELECT DATEADD(year, DATEDIFF(year, 0, GETDATE()), 0)
-- 本年最后一天
SELECT DATEADD(year, DATEDIFF(year, 0, GETDATE())+1, -1)
SELECT DATEADD(year,DATEDIFF(year,0,DATEADD(year,1,GETDATE())),-1)
-- 去年同一天
SELECT DATEADD(YEAR,-1,GETDATE())
-- 去年第一天
SELECT convert(varchar(7),DATEPART(year,DATEADD(year,-1,GETDATE())),120)+'-01-01'
-- 去年最后一天
SELECT DATEADD(year, DATEDIFF(year, 0, GETDATE()), -1)
SELECT DATEADD(ms,-2,DATEADD(yy, DATEDIFF(year,0,getdate()), 0))
-- 下年第一天
SELECT convert(varchar(7),DATEPART(year,DATEADD(year,1,GETDATE())),120)+'-01-01'
-- 下年最后一天
SELECT DATEADD(year, DATEDIFF(year, 0, GETDATE())+2, -1)
-- 返回当前日期是当月的第几周
SELECT (DATEPART(wk,GETDATE()) - DATEPART(wk,convert(varchar(7),GETDATE(),120) + '-01') + 1)
-- 返回当月的最后一天是当月的第几周
SELECT (DATEPART(wk,EOMONTH(GETDATE())) - DATEPART(wk,convert(varchar(7),EOMONTH (GETDATE()),120) + '-01') + 1)
-- 获取月份的英文缩写
SELECT GETDATE(), left(DateName(m, GETDATE()), 3)
希望对你有帮助!!!
欢迎在评论区讨论,有什么写得不对的,欢迎指出来