Einfachste Weg, um einen Termin zu erstellen, der erste Tag des Monats ist, da ein anderes Datum

StackOverflow https://stackoverflow.com/questions/121581

  •  02-07-2019
  •  | 
  •  

Frage

In SQL Server, was ist die einfachste / sauberste Weg, um einen Datetime, die den ersten Tag des Monats auf einem anderen Datetime-Basis zu machen? zB Ich habe eine Variable oder Spalte mit 3-Mar-2005 14.23 und ich möchte 1-Mar-2005 00:00 bis bekommen (als Datum, nicht als varchar)

War es hilfreich?

Lösung

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

Um dies auf einer Säule laufen, ersetzen GetDate () mit dem Spaltennamen.

Der Trick, um diesen Codes ist mit DateDiff. DatDiff gibt eine ganze Zahl ist. Der zweite Parameter (0) die 0 Datum in SQL Server, der 1. Januar ist 1900. So ist die datediff die ganze Anzahl von Monaten berechnet seit 1. Januar 1900, fügt dann hinzu, dass die Anzahl der Monate bis 1. Januar 1900. der Nettoeffekt ist, den Tag (und Zeit) Teil eines Datetime-Wert zu entfernen.

Andere Tipps

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

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

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

Verwenden Sie einfach

DATEADD(DAY, 1-DAY(@date), @date)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top