2009-08-24 3 views
2

Das sollte nicht so schwer sein. Ich brauche einfach folgende:Erster Tag des nächsten Jahres für SQL Server?

SET @DueDate = CONVERT (DATETIME, '01/01/2010') 

aber ich brauche es pragmatisch, so dass wenn es März 2010, das Datum würde '01/01/2011' gegeben sein.

Ich weiß, es ist einfach, aber mein Gehirn ist nicht dabei. Ich bin sicher, es ist mit einem DateAdd und getdate().

Antwort

7

Anzahl der Jahresgrenzen zwischen jetzt und Jahr Null minus eins (31 Dezember 1899), addieren Sie auf.

SELECT DATEADD(year, DATEDIFF(year, -1, GETDATE()), 0) 

Lasst uns ein Datum im nächsten Jahr versuchen, 2010 bis 2011 zu erhalten, weil 1. JANUAR 2009 ...

SELECT DATEADD(year, DATEDIFF(year, -1, '2010-03-21'), 0) 
+0

Tatsächlich gibt das '1/2/2010' zurück. :) – DavidStein

+0

Die zweite funktionierte. Vielen Dank. – DavidStein

0

Vielleicht erstellen Sie eine Tabelle mit ersten der Jahreszahlen Anfang nächsten Jahres, Wählen Sie dann das kleinste, das größer als Ihr Datum ist.

Vielleicht einfach eine Zeichenfolge zusammen, '01/01 '+ (MyYear + 1)?

2

Basierend auf dem Datenbank-Journal-Artikel: How to Calculate Different SQL Server Dates:

ersten Tag des Weiter Jahres

ich das Jahres-Intervall (yy) den ersten Tag des nächsten Jahres anzuzeigen .

wählen DATEADD (yy, DATEDIFF (yy, -1, getdate()), 0)

+0

Danke, aber sollte das nicht sein: DATEADD auswählen (yy, DATEDIFF (yy, -1, getdate()), 0) Wie oben für nächstes Jahr? – DavidStein

+0

Ja. Wie berichtet, war es der erste Tag des * dieses * Jahres. Ich werde die Änderung vornehmen. –

0

Sie ein in das laufende Jahr könnte hinzufügen, dann Concat mit Jan 01 dann konvertieren zurück zu Datum:

select CONVERT(datetime, CONVERT(VARCHAR(20), YEAR(GETDATE())+1) + '.01.01') 
0

einige Teile der obigen Beispiele Sie verwenden auch dies tun könnte. Nun wird davon ausgegangen, dass Ihr akzeptables Datumsformat mit M-d-JJJJ übereinstimmt.

DATEADD(year, 1,'1-1-'+convert(varchar,DATEPART(YYYY,GetDate()))) 

Hinweis: Sie das aktuelle Datum erhalten, das Jahr Teil erhalten, erstellen Sie eine Zeichenfolge, die zu einem Datum konvertiert, dann fügen Sie ein auf das Jahr.