2013-02-28 81 views
7

我想獲得像01/01/2013上個月的第一天,我也想得到像01/31一樣的上個月的最後一天/ 2013。如果我們在三月份的話,我希望做同樣的事情,像2013年2月1日和2013年2月28日等.... 感謝如何獲得第一天和上個月的最後一個使用sql

+0

看看這個[SQL第一,一個月的最後一天](http://sqltutorials.blogspot.de/2007/06/sql-first-and-last-day-of-month.html) – Belial09 2013-02-28 20:25:20

+0

也是這樣的:http://blog.sqlauthority.com/2007/08/18/sql-server-find-last-of-any-month-current-previous-next/ – 2013-02-28 20:30:32

回答

26

這應做到:

--First day of last month 
SELECT DATEADD(m,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()), 0)) 
--Last day of last month 
SELECT DATEADD(d,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()),0)) 
0

這裏是我的解決方案

DECLARE @Today DATETIME 
SELECT @Today = GETDATE() 

    update Test.dbo.DateTable 
    set StartDate = (
SELECT convert (varchar, DATEADD(dd,-(DAY(DATEADD(mm,1,@Today))-1),DATEADD(mm,-1,@Today)),101)) 

update Test.dbo.DateTable 
set EndDate = (
SELECT convert(varchar, DATEADD(dd, -DAY(DATEADD(m,1,@Today)), DATEADD(m,0,@Today)),101)) 
0

上個月

convert (date,DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())-1, 0)) 
的第一天

前一個月的最後一天

convert (date,DATEADD(MONTH, DATEDIFF(MONTH, -1, GETDATE())-1, -1))) 
-1

下面的查詢工作找到了前一個月的在我的舊的MySQL的最後一天:

SELECT DATE_SUB(CURDATE(),INTERVAL Extract(DAY from now()) DAY); 
+1

問題標記爲「SQL Server」 – 2016-04-29 08:15:34

相關問題