Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0) Kann mir das jemand erklären

Dadurch erhalten Sie den Ersten des Monats für ein bestimmtes Datum

inner selectselect DATEDIFF(MONTH, 0, GETDATE()) gibt die Anzahl der Monate ab 1900-01-01

an

hier ist es 1350

dies wird zu 1900-01-01 hinzugefügt, aber nur die Monate

select DATEADD(MONTH,1350,0) ergibt 2012-07-01 00:00:00.000

das ist der Beginn des aktuellen Monats.

Ich denke, dies ist der effizienteste Weg, um den Beginn eines Monats für ein bestimmtes Datum zu finden.