Ich muss nur den ersten Tag des Monats einer bestimmten Datums- / Uhrzeitvariablen auswählen.
Ich weiß, dass es ziemlich einfach ist, diese Art von Code zu verwenden:
select CAST(CAST(YEAR(@mydate) AS VARCHAR(4))
+ '/' + CAST(MONTH(@mydate) AS VARCHAR(2)) + '/01' AS DATETIME)
Aber das ist nicht sehr elegant und wahrscheinlich auch nicht sehr schnell.
Gibt es einen besseren Weg, dies zu tun? Ich verwende SQL Server 2008.
SELECT EOMONTH(@mydate) AS EndOfMonth
, erhalten Sie den letzten Tag des Monats.Zusätzlich zu all den obigen Antworten wurde ein Weg gefunden, der auf einer in eingeführten Funktion basiert
sql 2012
quelle
Beginnend mit SQL Server 2012:
quelle
Das Umwandeln eines Strings (dh "01.05.2009") in datetime ist sicherlich besser lesbar, aber wir haben vor einiger Zeit Code gefunden, der den ersten des Monats zurückgeben würde ...
quelle
Einfache Abfrage:
quelle
Es ist wahrscheinlich ziemlich schnell. Warum erstellen Sie es nicht als SQL-Funktion?
quelle
Das funktioniert auch:
quelle
Bitte benutzen Sie dies
Für Server 2012
Vor Server 2012
quelle
Erster und letzter Tag des laufenden Monats:
quelle
quelle
Operand type clash: date is incompatible with int
. Ich denke, es liegt daran, dass Sie versuchen, den-
Operator für ein Datum zu verwenden?quelle
Dies kann eine neue Funktion sein, Sie können jedoch auch alte Funktionen verwenden:
Wenn das Datum in der Variablen beispielsweise
'2017-10-29'
wäre, würde es ein Datum von zurückgeben'2017-10-01'
https://docs.microsoft.com/en-us/sql/t-sql/functions/datefromparts-transact-sql?view=sql-server-ver15
quelle
Zukünftige Googler unter MySQL versuchen dies:
quelle
sql-server
Fragedate_sub
undinterval
sindmysql
.Ich habe GETDATE () als Datum für die Arbeit verwendet. Sie können es durch das Datum ersetzen, das Sie benötigen.
So funktioniert das: Zuerst formatieren wir das Datum im Format JJJJMMTT ... und kürzen es, um nur die 6 Zeichen ganz links beizubehalten, um nur den Teil JJJJMM beizubehalten. Dann fügen wir '01' als Monat hinzu - und voila! Sie haben den ersten Tag des aktuellen Monats.
Übrigens, die Leistung ist großartig!
quelle
Wenn Sie sich das heute ansehen und SQL Server 2012 oder höher verwenden, haben Sie die EOMONTH-Funktion, die die Dinge einfacher macht:
Sie können GETDATE () mit einer beliebigen Datumsvariablen ändern.
quelle
Hier können wir die folgende Abfrage zum ersten Datum des Monats und zum letzten Datum des Monats verwenden.
quelle
Bei Verwendung von SQL Server 2012 oder höher;
quelle
Mit der -2 erhalten Sie den ersten Tag des letzten Monats. dh getdate () ist der 15.10.18. Ihre Ergebnisse wären 9/1/18. Wechseln Sie zu -1 und Ihre Ergebnisse wären 10/1/18. 0 wäre der Anfang des nächsten Monats, 11/1/2018 .. etc etc.
oder
quelle
Versuchen Sie, die folgende Abfrage auszuführen:
SELECT DATE_ADD(DATE_ADD(LAST_DAY(CURRENT_DATE-INTERVAL 1 DAY),INTERVAL 1 DAY),INTERVAL -1 MONTH)
quelle
Wählen Sie CONVERT (Datum, DATEADD (dd, - (DATEPART (dd, getdate ()) - 1), getdate ()), 120).
Diese Funktion gibt Ihnen das Datum als Teil des Startdatums des Monats an
quelle
.................................................. ....................
Wenn Sie die Zeit nicht möchten, konvertieren Sie sie in DATE oder wenn Sie die Zeit auf 0:00:00 einstellen möchten, konvertieren Sie sie in DATE und dann zurück in DATETIME.
Ändern Sie GETDATE () auf das gewünschte Datum
quelle
Ich persönlich habe empfohlen, dass die unten stehende SQL, weil ich versuche, die Datumsfunktion in der Bedingungsklausel zu verwenden, meine Abfragegeschwindigkeit sehr verlangsamt.
Fühlen Sie sich trotzdem frei, dies zu versuchen.
quelle
Nicht mit einem der großen Köpfe hier zu konkurrieren, sondern ein einfacher Vorschlag, der etwas anders ist als die oben akzeptierte Antwort.
quelle
Ich benutze gerne
FORMAT
, man kann sogar eine Zeit angebenquelle
In SQL Server 2012
quelle
Diese Abfrage sollte unter MySQL sehr gut funktionieren:
quelle
Für alle, die noch nach einer Antwort suchen, funktioniert dies wie ein Zauber und beseitigt alle Datenköpfe. Der Zeitstempel ist optional, falls er angegeben werden muss, funktioniert aber auch ohne.
quelle
Holen Sie sich das erste und das letzte Datum in dem Datum, das wir als Parameter in SQL übergeben
quelle
So würden Sie es in MySQL machen:
quelle
SELECT FORMAT(GETDATE(), 'yyyy-MM-01')