DECLARE
@
Date
DATETIME = GETDATE();
SELECT
@
Date
AS
'目前時間'
,DATEADD(DD,-1,@
Date
)
AS
'前一天'
,DATEADD(DD,1,@
Date
)
AS
'後一天'
/*月計算*/
,DATEADD(
MONTH
,DATEDIFF(
MONTH
,0,@
Date
),0)
AS
'月初'
,DATEADD(DD,-1,DATEADD(
MONTH
,1+DATEDIFF(
MONTH
,0,@
Date
),0))
AS
'月末(精確到天)'
,DATEADD(SS,-1,DATEADD(
MONTH
,1+DATEDIFF(
MONTH
,0,@
Date
),0))
AS
'月末(精確到datetime的小數位)'
,DATEADD(
MONTH
,DATEDIFF(
MONTH
,0,@
Date
)-1,0)
AS
'上月第一天'
,DATEADD(
DAY
,-1,DATEADD(
DAY
,1-DATEPART(
DAY
,@
Date
),@
Date
))
AS
'上月最後一天'
,DATEADD(
MONTH
,DATEDIFF(
MONTH
,0,@
Date
)+1,0)
AS
'下月第一天'
,DATEADD(
DAY
,-1,DATEADD(
MONTH
,2,DATEADD(
DAY
,1-DATEPART(
DAY
,@
Date
),@
Date
)))
AS
'下月最後一天'
/*周計算*/
,DATEADD(WEEKDAY,1-DATEPART(WEEKDAY,@
Date
),@
Date
)
AS
'本週第一天(週日)'
,DATEADD(WEEK,DATEDIFF(WEEK,-1,@
Date
),-1)
AS
'所在星期的星期日'
,DATEADD(
DAY
,2-DATEPART(WEEKDAY,@
Date
),@
Date
)
AS
'所在星期的次日'
,DATEADD(WEEK,-1,DATEADD(
DAY
,1-DATEPART(WEEKDAY,@
Date
),@
Date
))
AS
'上個星期第一天(週日)'
,DATEADD(WEEK,1,DATEADD(
DAY
,1-DATEPART(WEEKDAY,@
Date
),@
Date
))
AS
'下個星期第一天(星期日)'
,DATENAME(WEEKDAY,@
Date
)
AS
'本日是周幾'
,DATEPART(WEEKDAY,@
Date
)
AS
'本日是周幾'
/*年度計算*/
,DATEADD(
YEAR
,DATEDIFF(
YEAR
,0,@
Date
),0)
AS
'年初'
,DATEADD(
YEAR
,DATEDIFF(
YEAR
,-1,@
Date
),-1)
AS
'年底'
,DATEADD(
YEAR
,DATEDIFF(
YEAR
,-0,@
Date
)-1,0)
AS
'去年年初'
,DATEADD(
YEAR
,DATEDIFF(
YEAR
,-0,@
Date
),-1)
AS
'去年年底'
,DATEADD(
YEAR
,1+DATEDIFF(
YEAR
,0,@
Date
),0)
AS
'明年年初'
,DATEADD(
YEAR
,1+DATEDIFF(
YEAR
,-1,@
Date
),-1)
AS
'明年年底'
/*季度計算*/
,DATEADD(QUARTER,DATEDIFF(QUARTER,0,@
Date
),0)
AS
'本季季初'
,DATEADD(QUARTER,1+DATEDIFF(QUARTER,0,@
Date
),-1)
AS
'本季季末'
,DATEADD(QUARTER,DATEDIFF(QUARTER,0,@
Date
)-1,0)
AS
'上季季初'
,DATEADD(QUARTER,DATEDIFF(QUARTER,0,@
Date
),-1)
AS
'上季季末'
,DATEADD(QUARTER,1+DATEDIFF(QUARTER,0,@
Date
),0)
AS
'下季季初'
,DATEADD(QUARTER,2+DATEDIFF(QUARTER,0,@
Date
),-1)
AS
'下季季末'