SQL时间段获取

DECLARE @DateStart DATETIME,
        @DateEnd DATETIME,
        @Date DATETIME
        
        
SELECT @Date = GETDATE()

--一个月的开始
SELECT @DateStart = CAST(FLOOR(CAST(@Date as Numeric(18,10))) + 1 - DAY(@Date) as DATETIME)

--一个月的结束 
SELECT @DateEnd=DATEADD(ms, -3, DATEADD(MM, 1, @DateStart))

--------一个月的开始和结束
SELECT @DateStart, @DateEnd


--一天的开始
SELECT @DateStart = CAST(FLOOR(CAST(@Date as Numeric(18,10))) as DATETIME)

--一天的结束 
SELECT @DateEnd=DATEADD(ms, -3, @DateStart + 1)

--一天的开始和结算
SELECT @DateStart, @DateEnd

----------------------------------------------------

--一个月的开始
SELECT @DateStart = CAST(FLOOR(CAST(@Date as Numeric(18,10))) + 1 - DAY(@Date) as DATETIME)
--一年的开始
SELECT @DateStart = DATEADD(M, -month(@DateStart)+1, @DateStart)
--一年的最后 
SELECT @DateEnd=DATEADD(ms, -3, DATEADD(YEAR, 1, @DateStart))

--一年的开始和结算
SELECT @DateStart, @DateEnd
原文地址:https://www.cnblogs.com/DKSoft/p/3056872.html