2016-05-02 1 views
2

Ich verwende SQL Server 2014 und muss meiner SQL-Abfrage eine Codezeile hinzufügen, die die Datei filtert Daten extrahiert nur zu jenen Aufzeichnungen, in denen die StayDate (eine Spalte in der Datenbank) greater than or equal to der 1st day of the current month ist.T-SQL-Syntax zum Filtern von Datensätzen, bei denen die Variable datetime größer oder gleich dem 1. Tag des aktuellen Monats ist

Mit anderen Worten, ich die Zeile Code benötigen, ist die folgende:

WHERE StayDate >= '1st Day of Current Month' 

Hinweis: StayDate ist im datetime Format (zB: 2015.12.18 00: 00: 00.000)

+0

ich die DATEDIFF Funktion versucht, aber ich konnte es nicht bekommen richtig funktionieren. – user3115933

Antwort

3

Verwenden EOMONTH den ersten Tag des aktuellen Monats

WHERE StayDate >= Dateadd(dd, 1, Eomonth(Getdate(), -1)) 
1

erhalten Sie folgenden Ansatz versuchen:

declare @t datetime = '2016-02-28' 
select DATEADD(D, -DATEPART(d, @t) + 1, @t) 

So in Ihrem Fall:

WHERE StayDate >= DATEADD(D, -DATEPART(d, GETDATE()) + 1, GETDATE()) 
0
StayDate >= DATEADD(MONTH, DATEDIFF(MONTH, '19000101', GETDATE()), '19000101') 
2

SQL Server 2012 und höher

WHERE StayDate >= DATEADD(DAY, 1, EOMONTH(GETDATE(), -1)) 

Vor SQL Server 2012

WHERE StayDate >= DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0) 
+0

Schreiben Sie keine doppelten Antworten. Anfangs hatte man gerade die zweite Abfrage –

0

Eine andere Option; da staydate sind am oder nach dem (größer oder gleich) dem ersten Tag des laufenden Monats entspricht für staydate s im laufenden Monat auf der Suche:

where datepart(mm, staydate) = datepart(mm, getdate()) 
    and datepart(yyyy, staydate) = datepart(yyyy, getdate()) 
Verwandte Themen