Wie kann ich mit SQL Server 2000 das erste und letzte Datum des aktuellen Jahres abrufen?
Erwartete Ausgabe:
01/01/2012
und 31/12/2012
quelle
Wie kann ich mit SQL Server 2000 das erste und letzte Datum des aktuellen Jahres abrufen?
Erwartete Ausgabe:
01/01/2012
und 31/12/2012
SELECT
DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0) AS StartOfYear,
DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, -1) AS EndOfYear
Die obige Abfrage gibt einen Datum / Uhrzeit-Wert für Mitternacht Anfang Dezember 31 an. Dies ist ungefähr 24 Stunden vor dem letzten Moment des Jahres. Wenn Sie die Zeit einbeziehen möchten, die möglicherweise am 31. Dezember auftritt, sollten Sie mit einem <
Vergleich mit dem ersten des nächsten Jahres vergleichen. Oder Sie können mit den letzten Millisekunden des laufenden Jahres vergleichen, aber dies lässt immer noch eine Lücke, wenn Sie etwas anderes als DATETIME (wie DATETIME2) verwenden:
SELECT
DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0) AS StartOfYear,
DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, -1) AS LastDayOfYear,
DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, 0) AS FirstOfNextYear,
DATEADD(ms, -3, DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, 0)) AS LastTimeOfYear
Technische Details
Dies funktioniert, indem die Anzahl der Jahre seit 1900 mit ermittelt DATEDIFF(yy, 0, GETDATE())
und dann zu einem Datum von Null = 1. Januar 1900 addiert wird. Dies kann geändert werden, um für ein beliebiges Datum zu arbeiten, indem der GETDATE()
Teil oder ein beliebiges Jahr durch Ersetzen der DATEDIFF(...)
Funktion durch ersetzt wird "Jahr - 1900."
SELECT
DATEADD(yy, DATEDIFF(yy, 0, '20150301'), 0) AS StartOfYearForMarch2015,
DATEADD(yy, 2015 - 1900, 0) AS StartOfYearFor2015
Hier ist ein ziemlich einfacher Weg;
SELECT DATEFROMPARTS(YEAR(GETDATE()), 1, 1) AS 'First Day of Current Year';
SELECT DATEFROMPARTS(YEAR(GETDATE()), 12, 31) AS 'End of Current Year';
Es ist nicht sexy, aber es funktioniert.
Sie können das aktuelle Jahr mit der
DATEPART
Funktion ab dem aktuellen Datum abrufen, das Sie mit erhalten habengetUTCDate()
quelle
DATETIME
anstelle eines Strings bekommen kann und offensichtlich stimmt das möglicherweise nicht mit der erwarteten Ausgabe gemäß der Frage überein.yyyyMMdd
ist eindeutig.schreibe einfach: -
Startdatum des Jahres.
quelle
Jedes Jahr hat das 1. als erstes Datum und das 31. als letztes Datum. Sie müssen nur das Jahr an diesen Tag und Monat anhängen, zum Beispiel: -
quelle
Um den ersten und den letzten Tag des Jahres zu erhalten, kann man die
CONCAT
Funktion verwenden. Der resultierende Wert kann in einen beliebigen Typ umgewandelt werden.quelle
Zum Startdatum des laufenden Jahres:
Für das Enddatum des laufenden Jahres:
quelle
Ein anderer Weg: (seit SQL Server 2012)
quelle
Schauen Sie sich dieses an:
quelle
quelle
quelle
Es sieht so aus, als ob Sie daran interessiert sind, eine Operation für ein bestimmtes Jahr durchzuführen. Wenn dies tatsächlich der Fall ist, würde ich empfehlen, die Funktion YEAR () wie folgt zu verwenden :
Gleiches gilt für DAY () und MONTH () . Sie sind auch für MySQL / MariaDB-Varianten verfügbar und wurden in SQL Server 2008 eingeführt (also nicht für bestimmte 2000).
quelle
quelle
In Microsoft SQL Server (T-SQL) kann dies wie folgt erfolgen
CURRENT_TIMESTAMP - Gibt das SQL Server-Datum zum Zeitpunkt der Ausführung der Abfrage zurück.
JAHR - Ruft den Jahresteil des aktuellen Zeitstempels ab.
STR , LTRIM - Diese beiden Funktionen werden angewendet, damit wir sie in einen Varchar umwandeln können, der mit unserem gewünschten Präfix verknüpft werden kann (in diesem Fall ist es entweder das erste Datum des Jahres oder das letzte Datum des Jahres). Aus irgendeinem Grund hat das von der YEAR- Funktion generierte Ergebnis vorangestellte Leerzeichen. Um sie zu beheben, verwenden wir die LTRIM- Funktion, die links getrimmt ist.
quelle
Wenn es den 1. Januar erreicht, könnte es sein, dass es noch das Datum des letzten Jahres ist.
quelle
Versuche dies:
quelle
Msg 195, Level 15, State 10, Line 1 'NOW' is not a recognized function name.
--- Lalmuni Demos ---
--- Werte einfügen ---
quelle