SQL Server 常用日期函数的运用

 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) 

希望对你有帮助!!!

欢迎在评论区讨论,有什么写得不对的,欢迎指出来

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值