同事表示需要取出上個月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依此類推)*/
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)
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)
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))
SELECT DATEADD (DAY, 9 , DATEADD(MONTH, DATEDIFF(MONTH,31,GETDATE()) ,0))