汇总收集的,免得下次还要百度
--DATEADD ( datepart , number, date )
--在向指定日期加上一段时间的基础上,返回新的 datetime 值。
--DATEDIFF ( datepart , startdate , enddate )
--返回跨两个指定日期的日期和时间边界数。
--系统当前时间
select getdate()
--今年第一天
--首先DATEDIFF(YEAR,0,GETDATE()) --计算当前年份与 1900年相差的年数,然后通过计算1900-1-1加上相差的年数的日期即为当年第一天
SELECT DATEADD(YEAR,DATEDIFF(YEAR,0,GETDATE()),0)
--当月的第一天
SELECT DATEADD(MM, DATEDIFF(MM,0,getdate()), 0)
--上个月的第一天
SELECT DATEADD(MM, DATEDIFF(MM,0,getdate())-1, 0)
--当月的最后一天
SELECT DATEADD(MS,-3,DATEADD(MM, DATEDIFF(MM,0,getdate())+1, 0))
--上个月的最后一天
SELECT DATEADD(MS,-3,DATEADD(MM, DATEDIFF(MM,0,getdate()), 0))
--季度的第一天和最后一天
select DATEADD(QQ, DATEDIFF(QQ,0,getdate()), 0)
SELECT DATEADD(QQ,-3,DATEADD(QQ, DATEDIFF(QQ,0,getdate()), 0)-1)
--当天的半夜
SELECT DATEADD(DAY,DATEDIFF(DAY,0,GETDATE()),0)
--一周的第几天
SELECT DATEPART(weekday,GETDATE())
--一周的第一天
SELECT DATEADD(DAY,1-DATEPART(weekday,GETDATE()),GETDATE())
--一周的最后一天
SELECT DATEADD(DAY,7-DATEPART(WeekDay,GETDATE()),GETDATE())
SELECT DATEADD(weekday,DATEDIFF(weekday,0,DATEADD(DAY,6-DATEPART(day,GETDATE()),GETDATE())),0)