2008-09-23 7 views

Antwort

23
Select DateAdd(Month, DateDiff(Month, 0, GetDate()), 0) 

auszuführen Ersetzen Sie in einer Spalte GetDate() durch Ihren Spaltennamen.

Der Trick zu diesem Code ist mit DateDiff. DateDiff gibt eine ganze Zahl zurück. Der zweite Parameter (die 0) stellt das 0-Datum in SQL Server dar, das 1. Januar 1900. So berechnet das datediff die Integer-Anzahl von Monaten seit dem 1. Januar 1900 und fügt dann diese Anzahl von Monaten zu 1. Januar 1900 hinzu. Der Nettoeffekt entfernt den Tag (und die Zeit) eines Datetime-Wertes.

+1

Dieser Code wird von genial gemacht. Es funktioniert auch für andere Zeiteinheiten. –

7
SELECT DATEADD(mm, DATEDIFF(mm, 0, @date), 0) 
2

So etwas wie dies funktionieren würde ....

UPDATE YOUR_TABLE 
SET NewColumn = DATEADD(day, (DATEPART(day, OldColumn) -1)*-1, OldColumn) 
+0

Der Ausdruck könnte etwas einfacher sein: 'DATEADD (Tag, 1 - DAY (OldColumn), OldColumn)'. Die Methode DATEADD & DATEDIFF ist jedoch besser, weil sie auch den Zeitteil zurücksetzt. –

0

Verwenden Sie einfach

DATEADD(DAY, 1-DAY(@date), @date)