日期的推算

2021-04-27 17:43:50 字數 1588 閱讀 5792

--日期的推算:(轉鄒老大的**)

declare @dt datetime

set @dt=getdate()

declare @number int

set @number=3

--1.指定日期該年的第一天或最後一天

--a. 年的第一天

select convert(char(5),@dt,120)+ '1-1 '

--b. 年的最後一天

select convert(char(5),@dt,120)+ '12-31 '

--2.指定日期所在季度的第一天或最後一天

--a. 季度的第一天

select convert(datetime,

convert(char(8),

dateadd(month,

datepart(quarter,@dt)*3-month(@dt)-2,

@dt),

120)+ '1 ')

--b. 季度的最後一天(case判斷法)

select convert(datetime,

convert(char(8),

dateadd(month,

datepart(quarter,@dt)*3-month(@dt),

@dt),

120)

+case when datepart(quarter,@dt) in(1,4)

then  '31 'else  '30 ' end)

--c. 季度的最後一天(直接推算法)

select dateadd(day,-1,

convert(char(8),

dateadd(month,

1+datepart(quarter,@dt)*3-month(@dt),

@dt),

120)+ '1 ')

--3.指定日期所在月份的第一天或最後一天

--a. 月的第一天

select convert(datetime,convert(char(8),@dt,120)+ '1 ')

--b. 月的最後一天

select dateadd(day,-1,convert(char(8),dateadd(month,1,@dt),120)+ '1 ')

--c. 月的最後一天(容易使用的錯誤方法)

select dateadd(month,1,dateadd(day,-day(@dt),@dt))

--4.指定日期所在周的任意一天

select dateadd(day,@number-datepart(weekday,@dt),@dt)

--5.指定日期所在周的任意星期幾

--a.  星期天做為一周的第1天

select dateadd(day,@number-(datepart(weekday,@dt)+@@datefirst-1)%7,@dt)

--b.  星期一做為一周的第1天

select dateadd(day,@number-(datepart(weekday,@dt)+@@datefirst-2)%7-1,@dt)

SQL日期推算

declare dt as datetime set dt getdate select cast convert varchar 8 dateadd month,datepart quarter,dt 3 month dt 2 dt 120 01 as datetime result 2008 1...

pta習題 退休日期推算

6 3 退休日期推算 10分 關於日期的結構定義如下 struct dateg 編寫兩個函式,乙個計算自公元1年1月1日到指定的日期共經歷了多少天。另乙個是前乙個函式的逆函式 由自公元1年1月1日歷經指定的天數後的日期 返回年月日構成的日期 dateg days2date int x 100 int...

MySql日期處理系列 常用的日期推算處理

title 常用的日期推算處理 auther 小強 占卜師 date 2007 12 25 取得當前日期 set dt curdate select dt 當前日期這個月的第一天 select concat left dt,8 1 當前日期這個月的最後一天 select date sub conca...