SQL 計算N個月前,N個月後的方法

2021-07-31 20:23:44 字數 1926 閱讀 4644

agenda

#1. 計算n個月前的日期

#2. 計算n個月後的日期

#3. 月末最後一天的情況(計算從日數多的月到日數較少的月)

#4. 月末最後一天的情況(計算從日數少的月到日數較多的月)

1|計算n個月前的日期

如果要計算n個月前的日期。使用dateadd函式,並且第二個引數n要指定為負數。

--指定n為負數

dateadd(month, n, 日付)

例如,計算2023年10月15日的前11個月的日期,sql 如下:

--以下會全返回 2014-11-15 00:00:00.000

select

dateadd(month, -11, '20151015'),

dateadd(month, -11, '2015/10/15'),

dateadd(month, -11, '2015-10-15')

2|計算n個月後的日期如果計算n個月後的日期,直接使用dateadd函式,且第二個引數n指定為正數。

dateadd(month, n, 日付)
例如,計算2023年10月15日的後3個月的日期,sql如下:

--以下會全返回 2016-01-15 00:00:00.000

select

dateadd(month, 3, '20151015'),

dateadd(month, 3, '2015/10/15'),

dateadd(month, 3, '2015-10-15')

3|月末最後一天的情況(計算從日數多的月到日數較少的月)在以日數多的月末最後一天開始,計算n個月後(n個月前)的日期,且該日期所在月為日數少的月,返回n個月後(n個月前)月末最後一天。

例如,3月31日的乙個月後為4月30日。3月31日的乙個月前,返回2月最後一天,且要考慮閏年的情況。

實際執行結果如下:

select 

--返回 2015-04-30 00:00:00.000

dateadd(month, 1, '2015/3/31'),

--返回 2015-02-28 00:00:00.000

dateadd(month, -1, '2015/3/31'),

--返回 2016-02-29 00:00:00.000

dateadd(month, -1, '2016/3/31')

4|月末最後一天的情況(計算從日數少的月到日數較多的月)在以日數少的月末最後一天開始,計算n個月後(n個月前)的日期,且該日期所在月為日數多的月,返回日期不變。

例如,4月30日的乙個月後為5月30日,4月30日的前乙個月為3月30日。

實際執行結果:

select 

--返回 2015-05-30 00:00:00.000

dateadd(month, 1, '2015/4/30'),

--返回 2015-03-30 00:00:00.000

dateadd(month, -1, '2015/4/30')

注:本文原創由`bluetata`發布於blog.csdn.net

linux自動清理n天(1個月)前日誌檔案

1.刪除檔案命令 find 對應目錄 mtime 天數 name 檔名 exec rm rf 例項命令 find data log mtime 30 name log exec rm rf 備註 將 data log 目錄下所有30天前帶 log 的檔案刪除。具體引數說明如下 find linux的...

php輸出最近N個月的起至時間戳

第一種方法 本月起至時間 date 0 start time date y m d h i s mktime 0,0,0,date m 1,date y date 0 end time date y m d h i s time 往前乙個月起至時間 date 1 start time date y ...

奇怪的Js時間計算方法,跨多個月後出現1天的誤差

在專案中要求用計算兩個時間相差的天數,通俗的說就是兩個時間 相減,我的方法 先把兩個時間轉成相應的毫秒,相減後,再除以 1000 60 60 24 就可以得到對應天數,但天數會比實際少一天所以需要再加上一天 如下 function datediff 當時測試沒有跨好幾個月,發現都沒有問題,直到測試人...