2013-02-28 20 views
7

Ich versuche, den ersten Tag des letzten Monats wie 01.01.2013 zu bekommen, auch ich möchte den letzten Tag des vorherigen Monats wie 01/31 bekommen/2013. Wenn wir März sind dann möchte ich das Gleiche wie 2013.02.01 und 2013.02.28 und so weiter tun .... dankWie bekomme ich den ersten Tag und den letzten des vorherigen Monats mit sql

+0

hat einen Blick auf diesem [SQL ersten Letzter Tag eines Monats] (http://sqltutorials.blogspot.de/2007/06/sql-first-and-last-day-of-month.html) – Belial09

+0

auch dies: http://blog.sqlauthority.com/2007/08/18/sql-server-find-last-jeden-monat-aktuell-vorhergehende-nächste/ –

Antwort

26

Dies sollte es tun:

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

hier ist meine Lösung

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

Erster Tag des letzten Monats

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

Am letzten Tag des Vormonats

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

Die folgende Abfrage, um den letzten Tag des Vormonats in meinem älteren MySQL finden funktioniert:

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

Frage ist markiert mit "SQL Server" –

Verwandte Themen