MS-SQL_取出每個月特定日期ex.上個月的10號

  • 257
  • 0

 

 

同事表示需要取出上個月10號的日期

SELECT DATEADD (DAY, 9 , DATEADD(MONTH,  DATEDIFF(MONTH,31,GETDATE()) ,0))

--------------------------------------------------------------------------
使用 DATEDIFF、DATEADD做計算
紀錄一下計算過程之會不記得XD

--計算今天到1900-01-01相差幾個月
SELECT DATEDIFF(MONTH,0,GETDATE())
--1420
SELECT DATEDIFF(MONTH,31,GETDATE())
/*算出今天跟 1899-12-31的月份差距( -1代表1899-12-31,-2就是1899-12-30依此類推)*/
--將1900-01-01加上1420個月,取出這個月的第一天
SELECT  DATEADD(MONTH,  DATEDIFF(MONTH,0,GETDATE()) ,0)
--SELECT  DATEADD(MONTH,  DATEDIFF(MONTH,'1900-01-01',GETDATE()) ,0)
--將1900-01-01加上 這個月-1個月,取出上個月的第一天
SELECT  DATEADD(MONTH,  DATEDIFF(MONTH,31,GETDATE()) ,0)
--SELECT  DATEADD(MONTH,  DATEDIFF(MONTH,31,'2016-02-29') ,0)
--因應此案例,上個月第一天+9天就是上個月10號
SELECT DATEADD (DAY, 9 , DATEADD(MONTH,  DATEDIFF(MONTH,31,GETDATE()) ,0))