Wie rufe ich ein Datum im YYYY-MM-DD
Format von SQL Server ab ? Ich brauche dies, um mit SQL Server 2000 und höher zu arbeiten. Gibt es eine einfache Möglichkeit, dies in SQL Server durchzuführen, oder wäre es einfacher, es programmgesteuert zu konvertieren, nachdem ich die Ergebnismenge abgerufen habe?
Ich habe CAST und CONVERT in Microsoft Technet gelesen , aber das gewünschte Format ist nicht aufgeführt, und das Ändern des Datumsformats ist keine Option.
sql-server
tsql
Kinze
quelle
quelle
Antworten:
Begrenzen der Größe der Varchar-Koteletts der Stundenportion, die Sie nicht möchten.
quelle
quelle
Beginnend mit SQL Server 2012 (ursprüngliche Frage ist für 2000):
SELECT FORMAT(GetDate(), 'yyyy-MM-dd')
quelle
Das Formular, nach dem Sie suchen, ist in der Online-Dokumentation der Bücher aufgeführt.
http://msdn.microsoft.com/en-us/library/aa226054(SQL.80).aspx
Versuchen Sie beispielsweise Folgendes:
quelle
Die
convert
Funktion mit dem Formatbezeichner 120 gibt Ihnen das Format "JJJJ-MM-TT HH: MM: SS". Sie müssen also nur die Länge auf 10 beschränken, um nur den Datumsteil zu erhalten:Das Formatieren von Daten ist jedoch im Allgemeinen besser in der Präsentationsschicht als in der Datenbank- oder Geschäftsschicht. Wenn Sie das aus der Datenbank formatierte Datum zurückgeben, muss der Client-Code es erneut auf ein Datum analysieren, wenn Berechnungen erforderlich sind.
Beispiel in C #:
quelle
Für JJJJMMTT versuchen
Ich habe nur auf SQLServer2008 getestet.
quelle
Ein anderer Weg ...
quelle
Für diejenigen, die auch den Zeitteil wollen (ich tat es), kann das folgende Snippet helfen
quelle
Wird auch Trick machen, ohne "etwas abzuhacken".
quelle
Für den Fall, dass jemand es umgekehrt machen möchte und dies findet.
Dadurch wird eine Zeichenfolge im deutschen Datumsformat in ein Datum / Uhrzeit-Objekt konvertiert.
Warum 104? Siehe hier: http://msdn.microsoft.com/en-us/library/ms187928.aspx
quelle
Verwenden Sie in Ihrem Cast- und Convert-Link den Stil 126 wie folgt:
CONVERT (varchar(10), DTvalue, 126)
Dies verkürzt die Zeit. Ihre Anforderung, es in JJJJ-MM-TT zu haben, bedeutet, dass es sich um einen Zeichenfolgendatentyp und eine Datumszeit handelt.
Ehrlich gesagt würde ich es auf dem Kunden tun, es sei denn, Sie haben gute Gründe, dies nicht zu tun.
quelle
Wenn Sie es als Datum anstelle eines
varchar
späteren Datums verwenden möchten, vergessen Sie nicht, es zurück zu konvertieren:quelle
Ich bin mir nicht sicher, warum der einfachste Weg in den obigen Antworten ignoriert / weggelassen wurde:
Ich bevorzuge die zweite, denn egal welche Sprache Sie sprechen, Sie werden verstehen, welches Datum es ist!
Auch SQL Server "versteht" es immer, wenn Sie dies an Ihre Speicherprozedur senden, unabhängig davon, welche regionalen Formate auf den Computern festgelegt sind. Ich verwende immer das Format für das ganze Jahr (JJJJ), den Monat (MMM) und das 24-Stunden-Format (Großbuchstabe HH). für eine Stunde in meiner Programmierung.
quelle
SELECT CONVERT(NVARCHAR(20), GETDATE(), 23)
quelle
Sie können auch verwenden. Dies erfolgt mithilfe des neuen Datentyps
DATE
. Funktioniert möglicherweise nicht in allen früheren Versionen, ist jedoch in späteren Versionen stark vereinfacht.quelle
Ich würde ... benutzen:
quelle
quelle
Ab SQL Server 2008 können Sie Folgendes tun:
CONVERT(date,getdate())
quelle
Scheint unnötig, irgendwelche seltsamen Dinge zu tun, wenn Sie möchten, dass Ihr Date durch einen Schrägstrich getrennt wird. Entkomme einfach mit einem Backslash. Andernfalls erhalten Sie einen Punkt.
Getestet auf SQL Server 2016
quelle
Die Verwendung einer CASE-Anweisung für jede der Konvertierungs- / Cast-Funktionen funktioniert bei mir immer:
Hoffe das war hilfreich. chagbert.
quelle
Diese Lösung funktioniert für mich einfach und effektiv (mit 126 auch)
quelle
Wenn Ihr Quellendatumsformat völlig durcheinander ist, versuchen Sie Folgendes:
quelle
quelle