SQL日期推算

2021-08-22 20:12:32 字數 855 閱讀 1467

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-11-01

計算邏輯:

用當前的季度 * 每季度的月份數(3) - 當前月 - 季度中的2個月份

如: date: 2008-11-06

季度: 4

計算: 4*3-11-2 = -1

根據計算的結用dateadd 求合,對日期時行調整,得出當前季度的第乙個月份,再拼接 『01』,得出當明季度的第一天。

通過變通我們可以得到季度最後乙個月的第一天:

select cast(convert(varchar(8),dateadd(month,(datepart(quarter,@dt)*3-month(@dt)),@dt),120)+'01' as datetime)

本月的最後一天:

declare @dt datetime

set @dt=getdate()

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

--result--

2008-11-30 00:00:00.000

另乙個方法最本月最後一天,減去天數,變成上個月的最後一天,再加1月份,變成當前月的最後天

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

日期的推算

日期的推算 轉鄒老大的 declare dt datetime set dt getdate declare number int set number 3 1 指定日期該年的第一天或最後一天 a.年的第一天 select convert char 5 dt,120 1 1 b.年的最後一天 sel...

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...