So erstellen Sie ein Datum in SQL Server mit dem Tag, Monat und Jahr als Ganzzahlen

9

FOR Beispiel wenn ich:

%Vor%

Ich möchte zurückgeben

%Vor%

Als Datum oder Datum Uhrzeit

    
Wicky 23.02.2016, 11:56
quelle

5 Antworten

16

In SQL Server 2012+ können Sie datefromparts() :

verwenden %Vor%

In früheren Versionen können Sie eine Zeichenfolge umwandeln. Hier ist eine Methode:

%Vor%     
Gordon Linoff 23.02.2016, 11:57
quelle
2

In SQL Server 2012+ können Sie DATEFROMPARTS ():

%Vor%

In früheren Versionen besteht eine Methode darin, eine Zeichenfolge zu erstellen und zu konvertieren.

Es gibt einige String-Datumsformate, die SQL Server unabhängig von den Einstellungen für Datum, Sprache oder Internationalisierung zuverlässig interpretiert.

  

Eine sechs- oder achtstellige Zeichenfolge wird immer als ymd interpretiert. Der Monat   und Tag muss immer zwei Ziffern sein.

Ссылка

Also wird eine Zeichenkette im Format 'yyyymmdd' immer richtig interpretiert.

(ISO 8601-- YYYY-MM-DDThh:mm:ss - funktioniert auch, aber Sie müssen Zeit angeben und deshalb ist es komplizierter als Sie brauchen.)

Während Sie einfach CAST diese Zeichenfolge als Datum verwenden können, müssen Sie CONVERT verwenden, um einen Stil anzugeben, und Sie muss einen Stil angeben, um deterministisch zu sein (wenn Ihnen das wichtig ist).

Das Format "yyyymmdd" ist Stil 112, also sieht Ihre Umwandlung folgendermaßen aus:

%Vor%

Und es ergibt sich:

  

2016-10-25

Technisch funktioniert das Format ISO / 112 / yyyymmdd auch mit anderen angegebenen Stilen. Verwenden Sie beispielsweise das Textformat mit Stil 104 (Deutsch, TT.MM.JJJJ):

%Vor%

Ergibt auch noch:

  

2016-10-25

Andere Formate sind nicht so robust. Zum Beispiel:

%Vor%

Ergebnisse in:

  

0

Beachten Sie bei dieser Methode, dass Nonsense-Eingaben gültige, aber falsche Daten liefern können:

%Vor%

Ergibt auch:

  

2016-10-25

DATEFROMPARTS schützt Sie vor ungültigen Eingaben. Dies:

%Vor%

Erträge:

  

Msg 289, Ebene 16, Status 1, Zeile 2 Kann Datentypdatum nicht erstellen,   Einige der Argumente haben Werte, die nicht gültig sind.

Beachten Sie auch, dass diese Methode für Daten vor dem 01.01.01 nicht funktioniert. Zum Beispiel:

%Vor%

Erträge:

  

Nachricht 241, Ebene 16, Status 1, Zeile 2 Konvertierung fehlgeschlagen beim Konvertieren   Datum und / oder Uhrzeit aus der Zeichenfolge.

Das liegt daran, dass die resultierende Zeichenfolge "9000101" nicht im Format "JJJJMMTT" ist. Um eine korrekte Formatierung zu gewährleisten, müssen Sie sie mit führenden Nullen auffüllen, um eine kleine Menge Leistung zu opfern. Zum Beispiel:

%Vor%

Ergebnisse in:

  

0900-01-01

Neben der String-Konvertierung gibt es noch andere Methoden. Einige werden in Antworten auf " Erstellen eines Datums mit T-SQL bereitgestellt". Ein bemerkenswertes Beispiel umfasst das Erstellen des Datums durch Hinzufügen von Jahren, Monaten und Tagen zum "Nulldatum".

(Diese Antwort wurde von Gordon Linoff Antwort , die ich erweitert und zusätzliche Dokumentation und Hinweise zur Verfügung gestellt habe.)

    
Riley Major 05.09.2017 22:56
quelle
0

So können Sie diese Lösung versuchen:

%Vor%

Oder Sie können dies ein paar Zeilen Code versuchen:

%Vor%     
Muriel Souza 23.02.2016 12:47
quelle
0

Wählen Sie konvertieren (varchar (11), transfer_date, 106)

hat mir mein gewünschtes Ergebnis des Datums als 07 Mar 2018

formatiert

Meine Spalte 'transfer_date' ist eine Datetime-Type-Spalte und ich verwende SQL Server 2017 auf azurblauem

    
Hasan Junaid Hashmi 12.03.2018 07:05
quelle
-1

Der folgende Code sollte auf allen Versionen von SQL Server funktionieren, glaube ich:

%Vor%     
Shubham Pandey 23.02.2016 12:08
quelle

Tags und Links