Ich bin überrascht, diese Frage hier noch nicht finden zu können.
Ich habe eine Datums- / Uhrzeitvariable und möchte sie in eine Zeichenfolge konvertieren, damit ich sie an eine andere Zeichenfolge anhängen kann. Ich möchte es in einem Format, das einfach wieder in eine Datums- und Uhrzeitangabe konvertiert werden kann.
Wie kann ich das machen?
(Ich möchte den Datumsteil und den Zeitteil.)
sql-server
tsql
cja
quelle
quelle
Convert
, doppelklicken Sie, um hervorzuheben, drücken Sie Umschalt + F1 ... immer die erste Verteidigungslinie.Antworten:
Die folgende Abfrage ruft die aktuelle Datums- und Uhrzeitangabe ab und konvertiert sie in eine Zeichenfolge. mit dem folgenden Format
yyyy-mm-dd hh:mm:ss(24h)
quelle
DateTimeOffSet
sicher, dass Sie dievarchar
Länge so anpassen , wie Ihr Ergebnis aussehen soll. Für mich wollte ich nicht die Zeitzone, also musste ich verwendenSELECT convert(varchar(19), sysdatetimeoffset(), 120)
Es gibt viele verschiedene Möglichkeiten , um
convert
einedatetime
in einen String. Hier ist ein Weg:Siehe Demo
Hier ist eine Website mit einer Liste aller Conversions:
So formatieren Sie Datum und Uhrzeit in SQL Server
quelle
Mit der
convert
Anweisung in Microsoft SQL Server können Sie ein Datum in eine Zeichenfolge konvertieren. Ein Beispiel für die verwendete Syntax wäre:Das obige würde das aktuelle Datum und die aktuelle Uhrzeit in einer Zeichenfolge mit dem Format
YYYY-MM-DD HH:MM:SS
im 24-Stunden- Format zurückgeben .Sie können die Zahl am Ende der Anweisung in eine von vielen ändern, wodurch das zurückgegebene Zeichenfolgenformat geändert wird. Eine Liste dieser Codes finden Sie auf der MSDN im Referenzabschnitt CAST und CONVERT .
quelle
Es gibt 3 verschiedene Methoden, je nachdem, was ich benötige und welche Version ich verwende.
Hier sind die Methoden ..
1) Verwenden von Konvertieren
2) Verwenden von Cast (SQL Server 2008 und höher)
3) Verwenden des Zeichendatentyps mit fester Länge
quelle
Wenn Sie SQL Server 2012 und höher verwenden, verwenden Sie zusätzlich zu den Funktionen
CAST
undCONVERT
in den vorherigen Antworten die Funktion FORMAT , um einenDATETIME
basierten Typ in eine Zeichenfolge zu konvertieren .Verwenden Sie zum Zurückkonvertieren das Gegenteil
PARSE
oder dieTRYPARSE
Funktionen.Die Formatierungsstile basieren auf .NET (ähnlich den Zeichenfolgenformatierungsoptionen der ToString () -Methode) und haben den Vorteil, dass sie kulturbewusst sind. z.B.
Ergebnisse:
quelle
The format argument must contain a valid .NET Framework format string, either as a standard format string (for example, "C" or "D"), or as a pattern of custom characters for dates and numeric values (for example, "MMMM DD, yyyy (dddd)")
Use the FORMAT function for locale-aware formatting of date/time and number values as strings. For general data type conversions, use CAST or CONVERT.
Überprüfen Sie die CAST- und CONVERT-Syntax von t-sql:
http://msdn.microsoft.com/en-us/library/ms187928.aspx
quelle
101 - US - MM / TT / JJJJ
108 - Zeit - HH: MI: SS
112 - Datum - JJJJMMTT
121 - ODBC - JJJJ-MM-TT HH: MI: SS.FFF
20 - ODBC - JJJJ-MM-TT HH: MI: SS
quelle
Dies wurde von vielen Leuten beantwortet, aber ich denke, die einfachste Lösung wurde ausgelassen.
SQL SERVER (ich glaube, es ist 2012+) hat implizite Zeichenfolgenäquivalente für DATETIME2, wie hier gezeigt
Lesen Sie den Abschnitt "Unterstützte String-Literalformate für datetime2".
Um die OP-Frage explizit zu beantworten:
Ausgabe:
Hinweis: Die erste Variable (
myVar
) enthält tatsächlich auch den Wert'2019-01-23 12:24:00.0000000'
. Es wird nurJan 23 2019 12:24PM
aufgrund der für SQL Server festgelegten Standardformatierung formatiert, die bei Verwendung aufgerufen wirdPRINT
. Lass dich hier nicht davon stolpern, der eigentliche String in(myVer)
='2019-01-23 12:24:00.0000000'
quelle
Versuchen Sie es unten:
quelle