Konstruieren von DATETIME-Werten in T-SQL aus einzelnen Datumsteilen
In älteren Versionen von SQL Server (wie SQL Server 2005) kann das Erstellen eines DATETIME
-Werts direkt aus separaten Tages-, Monats- und Jahreskomponenten schwierig und fehleranfällig sein. In diesem Leitfaden werden verschiedene Methoden beschrieben, um dies zuverlässig zu erreichen.
Methode 1: Verwendung von DATEADD
für die Datetime-Konstruktion
Diese Methode nutzt die Funktion DATEADD
, um DATETIME
Schritt für Schritt zu erstellen:
<code class="language-sql">DECLARE @DayOfMonth TINYINT; SET @DayOfMonth = 13; DECLARE @Month TINYINT; SET @Month = 6; DECLARE @Year INT; SET @Year = 2006; SELECT DATEADD(day, @DayOfMonth - 1, DATEADD(month, @Month - 1, DATEADD(year, @Year - 1900, 0)));</code>
Die Subtraktion von 1 von @DayOfMonth
und @Month
berücksichtigt die Tatsache, dass DATEADD
mit Offsets vom Basisdatum (1. Januar 1900) arbeitet.
Methode 2: Alternative DATEADD
Syntax
Ein prägnanterer Ansatz mit DATEADD
ist:
<code class="language-sql">SELECT DATEADD(yy, @Year - 1900, DATEADD(m, @Month - 1, @DayOfMonth -1));</code>
Das gleiche Ergebnis wird mit einer etwas anderen Anordnung der DATEADD
Aufrufe erreicht.
Methode 3: DATEFROMPARTS
(SQL Server 2012 und höher)
SQL Server 2012 und spätere Versionen bieten die praktische DATEFROMPARTS
Funktion:
<code class="language-sql">SELECT DATEFROMPARTS(@Year, @Month, @DayOfMonth);</code>
Dies ist die einfachste Methode, wenn Ihre SQL Server-Version sie unterstützt.
Umgang mit Schaltjahren
Während DATEFROMPARTS
Schaltjahre automatisch verarbeitet, sind die DATEADD
-Methoden robust genug, um sie auch korrekt zu verarbeiten. Für Schaltjahre in den bereitgestellten Beispielen sind keine besonderen Anpassungen erforderlich.
Wählen Sie die Methode, die für Ihre SQL Server-Version und Ihren Codierungsstil am besten geeignet ist. DATEFROMPARTS
ist aufgrund seiner Einfachheit und Klarheit der bevorzugte Ansatz, sofern Ihre SQL Server-Version dies zulässt.
Das obige ist der detaillierte Inhalt vonWie erstelle ich in T-SQL einen Datetime-Wert aus separaten Tages-, Monats- und Jahreskomponenten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!