DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0)
Kann mir jemand dies erklären.DATEADD (MONAT, DATEDIFF (MONAT, 0, GETDATE()), 0) Kann mir jemand das erklären
DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0)
Kann mir jemand dies erklären.DATEADD (MONAT, DATEDIFF (MONAT, 0, GETDATE()), 0) Kann mir jemand das erklären
Es beginnt den aktuellen Monat. Es zählt die Anzahl der Monate seit Januar 1900, und fügt sie bis 1 Januar 1900 den Beginn des aktuellen Monats für ein bestimmtes Datum
dies werden Sie die ersten Tag des Monats erhalten
Innen wählen select DATEDIFF(MONTH, 0, GETDATE())
wird die Anzahl der Monate geben von 1900-01-01
hier wird es 1350
dies 1900-01-01 hinzufügen wird, sondern nur die Monate
select DATEADD(MONTH,1350,0)
wird geben 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.
The DATEDIFF will give you date diff in month from January 1 1900 to current date
AND
The DATEADD will add (DATEDIFF) results months to your last parameter of DATEADD
Die DATEADD Funktion fügt ein Intervall zu einem Datum, das Sie angeben. Für Beispiel, wenn die Fälligkeiten aller Aufträge in der Tabelle Salesorderheader 3 Tage gerutscht, konnte man die neuen Daten mit der folgenden Anweisung erhalten:
USE AdventureWorks;
GO
SELECT DATEADD(day, 3, DueDate)
FROM Sales.SalesOrderHeader;
GO
Die DATEDIFF Funktion berechnet den Zeitraum von Zeit in Dateiteilen zwischen dem zweiten und ersten von zwei Daten, die Sie angeben. Mit anderen Worten, es findet ein Intervall zwischen zwei Daten. Das Ergebnis ist eine vorzeichenbehaftete ganze Zahl Wert gleich Datum2 - Datum1 in Datum Teile. Die folgende Abfrage verwendet das Datum 30. November 2001, und findet die Anzahl der Tage, die zwischen DueDate und diesem Datum verstrichen:
USE AdventureWorks;
GO
SELECT DATEDIFF(day, DueDate, 'Nov 30 2001')
FROM Sales.SalesOrderHeader;
GO
SELECT DATEDIFF(year, '20051220', '20060101')
SELECT DATEDIFF(month, '20051220', '20060101')
SELECT DATEDIFF(day, '20051220', '20060101')
die DateDiff-Funktion gibt, wie viele Sekunden, Monate, Jahre - was auch immer Intervall Sie geben zwischen dem ersten Datum (hier 0) und dem zweiten Datum (hier das aktuelle Datum) an.
DATEDIFF(MONTH, 0, '2-14-2014') --returns month. 0 is for 1/1/1900, and getdate is the current date
--(i used a set date bc dates will change as this post gets older).
result: 1381
In meinen Arbeiten, habe ich das Datum des 2014.02.14 und es gab mir 1381 Anzahl der Monate seit 1.1.1900. Ich habe 1381 in die dateadd Funktion wie so ...
select Dateadd(MONTH, 1381, 0)
result: 2015-02-01 00:00:00.000
Grundsätzlich wird es am ersten Tag des Monats, was in dem Datum der innersten Formel angegeben wird.
Der Code, den ich herausfinden musste, ging einen Schritt weiter und subtrahierte 1 Sekunde von diesem Ergebnis, um den letzten Tag des Monats um 11:59:59 so zu bekommen ...
select DATEADD(s, -1, '2015-02-01 00:00:00.000')
Die Formel alles so ausdrücken sieht zusammen:
DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,getdate())+1,0))
Hope this jemand hilft. :)
Ich dachte immer, dass das Einstellen des Tages auf 1 das gleiche Ergebnis erzielt, aber viel einfacher ist? –