CAST und CONVERT (Transact-SQL) - SQL Server (2023)

  • Artikel
  • 27Minuten Lesedauer

Gilt für:CAST und CONVERT (Transact-SQL) - SQL Server (1) SQL Server (alle unterstützten Versionen) CAST und CONVERT (Transact-SQL) - SQL Server (2) Azure SQL-Datenbank CAST und CONVERT (Transact-SQL) - SQL Server (3) Azure SQL Managed Instance CAST und CONVERT (Transact-SQL) - SQL Server (4) Azure Synapse Analytics CAST und CONVERT (Transact-SQL) - SQL Server (5) Analytics Platform System (PDW)

Mit diesen Funktionen wird ein Ausdruck von einem Datentyp in einen anderen konvertiert.

Syntax

CAST-Syntax:

CAST ( expression AS data_type [ ( length ) ] )

CONVERT-Syntax:

CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

CAST und CONVERT (Transact-SQL) - SQL Server (6)Transact-SQL-Syntaxkonventionen

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server2014 oder früher finden Sie unter Dokumentation zu früheren Versionen.

Argumente

expression

Beliebiger gültiger Ausdruck.

data_type

Der Zieldatentyp. Dazu gehören xml, bigint und sql_variant. Aliasdatentypen können nicht verwendet werden.

length

Eine optionale ganze Zahl, die die Länge des Zieldatentyps angibt, falls eine vom Benutzer angegebene Länge für den Datentyp zulässig ist. Der Standardwert ist 30.

style

Ein ganzzahliger Ausdruck, der angibt, wie die CONVERT-Funktion expression übersetzt. Bei dem Formatwert NULL wird NULL zurückgegeben. data_type bestimmt den Bereich.

Rückgabetypen

Gibt expression zurück, der in data_type übersetzt wurde.

Datums- und Uhrzeitformate

Bei dem Datums- oder Uhrzeitdatentyp expression kann style einer der in der folgenden Tabelle aufgelisteten Werte sein. Andere Werte werden als 0 verarbeitet. Ab SQL Server 2012 (11.x) sind die einzigen Formate, die bei der Konvertierung von Datums- und Uhrzeittypen in datetimeoffset unterstützt werden, 0 oder 1. Bei allen anderen Konvertierungsformaten wird der Fehler 9809 zurückgegeben.

Hinweis

SQL Server unterstützt das Datumsformat im arabischem Format, indem der kuwaitische Algorithmus verwendet wird.

Ohne Jahrhundert (jj) 1Mit Jahrhundert (jjjj)StandardEingabe/Ausgabe 3
-0 oder 1001,2Standard für datetime und smalldatetimemon dd yyyy hh:miAM (oder PM)
1101USA1 = mm/dd/yy
101 = mm/dd/yyyy
2102ANSI2 = yy.mm.dd
102 = yyyy.mm.dd
3103Britisch/Französisch3 = dd/mm/yy
103 = dd/mm/yyyy
4104Deutsch4 = dd.mm.yy
104 = dd.mm.yyyy
5105Italienisch5 = dd-mm-yy
105 = dd-mm-yyyy
61061-6 = dd mon yy
106 = dd mon yyyy
71071-7 = Mon dd, yy
107 = Mon dd, yyyy
8 oder 24108-hh:mi:ss
-9 oder 1091,2Standardwert + Millisekundenmon dd yyyy hh:mi:ss:mmmAM (oder PM)
10110USA10 = mm-tt-jj
110 = mm-dd-yyyy
11111JAPAN11 = jj/mm/tt
111 = yyyy/mm/dd
12112ISO12 = jjmmtt
112 = yyyymmdd
-13 oder 1131,2Europ. Standard + Millisekundendd mon yyyy hh:mi:ss:mmm (24Stunden)
14114-hh:mi:ss:mmm (24Stunden)
-20 oder 1202ODBC kanonischyyyy-mm-dd hh:mi:ss (24Stunden)
-21 oder 25 oder 1212ODBC (mit Millisekunden) ist der Standard für time, date, datetime2 und datetimeoffsetyyyy-mm-dd hh:mi:ss.mmm (24Stunden)
22-USAmm/dd/yy hh:mi:ss AM (oder PM)
-23ISO8601yyyy-mm-dd
-1264ISO8601yyyy-mm-ddThh:mi:ss.mmm (Keine Leerzeichen) 6
-1278, 9ISO8601 mit ZeitzoneZyyyy-MM-ddThh:mm:ss.fffZ (Keine Leerzeichen) 6
-1301,2Hijri 5dd mon yyyy hh:mi:ss:mmmAM7
-1312Hijri 5dd/mm/yyyy hh:mi:ss:mmmAM

1 Diese Formatwerte geben nicht deterministische Ergebnisse zurück. Dazu gehören alle yy-Formate (ohne Jahrhundert) und eine Teilmenge der yyyy-Formate (mit Jahrhundert).

2 Die Standardwerte (0 oder 100, 9 oder 109, 13 oder 113, 20 oder 120, 23 und 21, 25 oder 121) geben immer das Jahrhundert (yyyy) zurück.

Wichtig

Standardmäßig verwendet SQL Server bei der Interpretation von zweistelligen Jahresangaben 2049 als Umstellungsjahr. Dies bedeutet, dass SQL Server die zweistellige Angabe des Jahres 49 als 2049 und die zweistellige Angabe des Jahres 50 als 1950 interpretiert. Viele Clientanwendungen, einschließlich jener auf Grundlage der Automatisierungsobjekte, verwenden als Umstellungsjahr 2030. SQL Server stellt die Konfigurationsoption für das Umstellungsjahr für Angaben mit zwei Ziffern zur Änderung des von SQL Server verwendeten Umstellungsjahrs bereit. Dies ermöglicht einen einheitlichen Umgang mit Datumsangaben. Die Verwendung von vierstelligen Jahresangaben wird empfohlen.

3 Eingabe, wenn in datetime konvertiert wird; Ausgabe, wenn in Zeichendaten konvertiert wird.

4 Vorgesehen für XML-Verwendung. Das Ausgabeformat für eine Konvertierung von datetime- oder smalldatetime-Daten in Zeichendaten finden Sie in der vorherigen Tabelle.

(Video) CAST() and CONVERT() in SQL Server

5 Hijri ist ein Kalendersystem mit mehreren Variationen. SQL Server verwendet den kuwaitischen Algorithmus.

6 Bei einem Millisekundenwert (mmm) von 0 wird der Dezimalbruch des Millisekundenwerts nicht angezeigt. Der Wert 2022-11-07T18:26:20.000 wird beispielsweise als 2022-11-07T18:26:20 angezeigt.

7 In diesem Format entspricht mon dem vollständigen Monatsnamen in Form einer Hijri-Unicode-Darstellung mit mehreren Token. In einer US-Standardinstallation von SSMS wird dieser Wert nicht ordnungsgemäß gerendert.

8 Wird nur bei der CAST-Umwandlung von Zeichendaten in datetime- oder smalldatetime-Werte unterstützt. Wenn Zeichendaten, die nur Zeit- oder nur Datumskomponenten darstellen, in die Datentypen datetime oder smalldatetime umgewandelt werden, wird die nicht angegebene Zeitkomponente auf 00:00:00.000 festgelegt und die nicht angegebene Datumskomponente auf 1900-01-01.

9 Verwenden Sie den optionalen Zeitzonenindikator Z, um die Zuordnung von XML-datetime-Werten mit Zeitzoneninformationen zu SQL Server-datetime-Werten ohne Zeitzone zu vereinfachen. Z steht für die Zeitzone UTC-0. Andere Zeitzonen werden durch einen HH:MM-Offset in +- oder --Richtung angegeben. Beispiel: 2022-12-12T23:45:12-08:00.

Bei der Konvertierung von smalldatetime-Daten in Zeichendaten werden bei Formaten mit Sekunden oder Millisekunden an diesen Stellen Nullen ausgegeben. Sie können bei der Konvertierung von datetime- oder smalldatetime-Werten in einen char- oder varchar-Datentyp eine entsprechende Länge angeben, damit unerwünschte Teile in Datumsangaben abgeschnitten werden.

Bei der Konvertierung von Zeichendaten in datetimeoffset wird unter Verwendung eines Formats mit einer Zeitangabe ein Zeitzonenoffset an das Ergebnis angehängt.

float- und real-Formate

Wenn expressionfloat oder real ist, kann style einen der in der folgenden Tabelle aufgelisteten Werte aufweisen. Andere Werte werden als 0 verarbeitet.

WertOutput
0 (Standardwert)Maximal 6 Ziffern. Wird ggf. in der wissenschaftlichen Schreibweise verwendet.
1Immer 8 Ziffern. Wird immer in der wissenschaftlichen Schreibweise verwendet.
2Immer 16 Ziffern. Wird immer in der wissenschaftlichen Schreibweise verwendet.
3Immer 17 Ziffern. Wird für die verlustlose Konvertierung verwendet. Mit diesem Format wird garantiert, dass jeder eindeutige „float“- oder „real“-Wert in eine eindeutige Zeichenfolge konvertiert wird.

Gilt für: SQL Server2016 (13.x) und spätere Versionen sowie Azure SQL-Datenbank

126, 128, 129Enthalten aufgrund der Kompatibilität mit Legacyversionen. Verwenden Sie diese Werte nicht für die Entwicklung neuer Anwendungen.

money- und smallmoney-Formate

Wenn expressionmoney oder smallmoney ist, kann style einen der in der folgenden Tabelle aufgelisteten Werte aufweisen. Andere Werte werden als 0 verarbeitet.

WertOutput
0 (Standardwert)Links vom Dezimaltrennzeichen werden keine Tausendertrennzeichen eingefügt, rechts vom Dezimaltrennzeichen stehen zwei Ziffern

Beispiel: 4235.98.

1Links vom Dezimaltrennzeichen werden Tausendertrennzeichen eingefügt, rechts vom Dezimaltrennzeichen stehen zwei Ziffern

Beispiel: 3,510.92.

2Links vom Dezimaltrennzeichen werden keine Tausendertrennzeichen eingefügt, rechts vom Dezimaltrennzeichen stehen vier Ziffern

Beispiel: 4235.9819.

126Entspricht Format2 bei der Konvertierung in char(n) oder varchar(n)

xml-Formate

Wenn expressionxml ist, kann style einen der in der folgenden Tabelle aufgelisteten Werte aufweisen. Andere Werte werden als 0 verarbeitet.

WertOutput
0 (Standardwert)Standardanalyseverhalten verwenden, bei dem bedeutungslose Leerzeichen verworfen werden und interne DTD-Teilmengen nicht zulässig sind.

Hinweis: Beim Konvertieren in den XML-Datentyp werden bedeutungslose Leerzeichen aus SQL Server anders behandelt als in XML 1.0. Weitere Informationen finden Sie unter Erstellen von Instanzen der XML-Daten.

1Bedeutungslose Leerzeichen erhalten. Mit dieser Formateinstellung wird festgelegt, dass die Standardbehandlung xml:space dem Verhalten von xml:space="preserve" entspricht.
2Begrenzte interne DTD-Teilmengenverarbeitung aktivieren.

Bei Aktivierung kann der Server die folgenden Informationen, die in einer internen DTD-Teilmenge bereitgestellt werden, zur Ausführung von Analysevorgängen ohne Überprüfungscharakter verwenden.

– Für Attribute werden die Standardwerte angewendet
– Interne Entitätsverweise werden aufgelöst und erweitert
– Das DTD-Inhaltsmodell wird auf seine syntaktische Richtigkeit überprüft

Der Parser ignoriert externe DTD-Teilmengen. Darüber hinaus nimmt er keine Bewertung der XML-Deklaration vor, um zu überprüfen, ob das eigenständige Attribut den Wert Ja oder Nein aufweist. Stattdessen analysiert er die XML-Instanz wie ein eigenständiges Dokument.

3Bedeutungslose Leerzeichen erhalten und die Verarbeitung begrenzter interner DTD-Teilmengen aktivieren.

Binäre Formate

Wenn expressionbinary(n), char(n), varbinary(n) oder varchar(n) ist, kann style einen der in der folgenden Tabelle aufgelisteten Werte aufweisen. Bei Formatwerten, die nicht in der Tabelle aufgelistet sind, wird ein Fehler zurückgegeben.

WertOutput
0 (Standardwert)Übersetzt ASCII-Zeichen in binäre Bytes bzw. binäre Bytes in ASCII-Zeichen. Jedes Zeichen bzw. Byte wird 1:1 konvertiert.

Bei einem binären data_type werden die Zeichen 0x links neben dem Ergebnis hinzugefügt.

1, 2Bei einem binären data_type muss der Ausdruck ein Zeichenausdruck sein. expression muss aus einer geraden Anzahl hexadezimaler Zeichen bestehen (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, a, b, c, d, e, f). Wenn style auf 1 festgelegt wird, müssen die Zeichen 0x die ersten beiden Zeichen im Ausdruck sein. Wenn der Ausdruck eine ungerade Anzahl an Zeichen oder ein ungültiges Zeichen enthält, wird ein Fehler ausgelöst.

Wenn die Länge des konvertierten Ausdrucks die Länge von data_type übersteigt, wird das Ergebnis rechts abgeschnitten.

Bei data_types mit fester Länge, die länger sind als das konvertierte Ergebnis, wird im Ergebnis rechts die entsprechende Anzahl an Nullen angehängt.

Für den Zeichentyp data_type ist ein binärer Ausdruck erforderlich. Jedes Binärzeichen wird in zwei Hexadezimalzeichen konvertiert. Angenommen, die Länge des konvertierten Ausdrucks überschreitet die Länge von data_type. In diesem Fall wird er abgeschnitten.

Bei dem Zeichentyp data_type mit fester Länge werden rechts neben dem konvertierten Ausdruck Leerzeichen hinzugefügt, um eine gerade Anzahl an Hexadezimalstellen zu erhalten, wenn die Länge des konvertierten Ergebnisses kleiner ist als die Länge von data_type.

Bei style2 werden links neben dem konvertierten Ergebnis die Zeichen0x nicht hinzugefügt.

Implizite Konvertierungen

Bei impliziten Konvertierungen ist keine Spezifikation der CAST- oder CONVERT-Funktion erforderlich. Bei expliziten Konvertierungen ist eine Spezifikation der CAST- oder CONVERT-Funktion erforderlich. In der folgenden Abbildung werden alle expliziten und impliziten Datentypkonvertierungen aufgeführt, die für die vom SQL Server-System bereitgestellten Datentypen zulässig sind. Dazu gehören bigint, sql_variant und xml. Es gibt keine implizite Konvertierung bei der Zuweisung vom sql_variant-Datentyp, eine implizite Konvertierung zum sql_variant-Datentyp findet jedoch statt.

Tipp

Dieses Diagramm ist als herunterladbare PNG-Datei im Microsoft Download Center verfügbar.

CAST und CONVERT (Transact-SQL) - SQL Server (7)

Das Diagramm oben veranschaulicht zwar alle expliziten und impliziten Konvertierungen, die in SQL Server zulässig sind. Der sich ergebende Datentyp der Konvertierung ist jedoch von dem ausgeführten Vorgang abhängig:

  • Bei expliziten Konvertierungen bestimmt die Anweisung selbst den sich ergebenden Datentyp.
  • Bei impliziten Konvertierungen führen Zuweisungsanweisungen wie das Festlegen des Werts einer Variablen oder das Einfügen eines Werts in eine Spalte zu dem Datentyp, der durch die Variablendeklaration oder Spaltendefinition festgelegt wurde.
  • Bei Vergleichsoperatoren oder anderen Ausdrücken hängt der sich ergebende Datentyp von den Regeln der Datentyprangfolge ab.

Tipp

Ein praktisches Beispiel für die Auswirkungen der Datentyprangfolge in Konvertierungen finden Sie weiter unten in diesem Abschnitt.

Beim Konvertieren zwischen datetimeoffset und den Zeichentypen char, nchar, nvarchar und varchar sollte der konvertierte Zeitzonenoffset-Teil sowohl für HH als auch für MM stets zwei Stellen umfassen. Beispielsweise -08:00.

Da Unicode-Daten immer eine gerade Anzahl von Bytes verwenden, muss das Konvertieren von binary- oder varbinary-Datentypen in oder von Unicode-Datentypen vorsichtig erfolgen. Die folgende Konvertierung gibt beispielsweise nicht den Hexadezimalwert41 zurück. Sie gibt den Hexadezimalwert4100 zurück:

SELECT CAST(CAST(0x41 AS nvarchar) AS varbinary);

Weitere Informationen finden Sie unter Collation and Unicode Support.

Datentypen mit umfangreichen Werten

Datentypen mit hohen Werten weisen das gleiche implizite und explizite Konvertierungsverhalten auf wie ihre Entsprechungen mit kleineren Werten, insbesondere die Datentypen nvarchar, varbinary und varchar. Beachten Sie jedoch folgende Richtlinien:

  • Die Konvertierung von image in varbinary(max) und umgekehrt stellt ebenso wie zwischen text und varchar(max) sowie ntext und nvarchar(max) eine implizite Konvertierung dar.
  • Die Konvertierung von Datentypen mit hohen Werten, z.B. varchar(max) , in einen entsprechenden kleineren Datentyp, z.B. varchar, ist zwar eine implizite Konvertierung, doch kommt es zu einer Abschneidung, wenn die Größe des hohen Werts die angegebene Länge des kleineren Datentyps überschreitet.
  • Die Konvertierung von nvarchar, varbinary oder varchar in einen entsprechenden kleineren Datentyp erfolgt implizit.
  • Die Konvertierung vom sql_variant-Datentyp in einen Datentyp mit hohen Werten ist eine explizite Konvertierung.
  • Datentypen mit hohen Werten können nicht in den sql_variant-Datentyp konvertiert werden.

Weitere Informationen zum Konvertieren des xml-Datentyps finden Sie unter Erstellen von Instanzen der XML-Daten.

xml-Datentyp

Wenn Sie den xml-Datentyp explizit oder implizit in einen Zeichenfolgen- oder Binärdatentyp umwandeln, wird der Inhalt des xml-Datentyps nach einer definierten Reihe von Regeln serialisiert. Informationen zu diesen Regeln finden Sie unter Definieren der Serialisierung von XML-Daten. Weitere Informationen zum Konvertieren anderer Datentypen in den xml-Datentyp finden Sie unter Erstellen von Instanzen der XML-Daten.

(Video) SQL SERVER Tutorial - T-SQL: Using CAST & CONVERT - Using STR

text- und image-Datentyp

Die automatische Datentypkonvertierung wird für die Datentypen text und image nicht unterstützt. Die explizite Konvertierung von text-Daten in Zeichendaten und von image- in binary- oder varbinary-Daten ist zwar möglich, doch nur bis zu einer maximalen Länge von 8000 Bytes. Falls Sie versuchen, eine unzulässige Konvertierung vorzunehmen, wie z.B. die Konvertierung eines Zeichenausdrucks mit Buchstaben in int-Daten, gibt SQL Server eine Fehlermeldung zurück.

Ausgabesortierung

Wenn die CAST- oder die CONVERT-Funktionen eine Zeichenfolge ausgeben und eine Zeichenfolgeneingabe empfangen, hat die Ausgabe dieselbe Sortierung und Sortierungsbezeichnung wie die Eingabe. Wenn die Eingabe keine Zeichenfolge ist, hat die Ausgabe die Standardsortierung der Datenbank und die Sortierungsbezeichnung „coercible-default“ (Standard erzwingbar). Weitere Informationen finden Sie unter Rangfolge der Sortierungen (Transact-SQL).

Wenn Sie der Ausgabe eine andere Sortierung zuweisen möchten, wenden Sie die COLLATE-Klausel auf den Ergebnisausdruck der CAST- oder CONVERT-Funktion an. Beispiel:

SELECT CAST('abc' AS varchar(5)) COLLATE French_CS_AS;

Abschneiden und Runden von Ergebnissen

Beim Konvertieren von Zeichen- oder Binärdatenausdrücken (binary, char, nchar, nvarchar, varbinary oder varchar) in einen Ausdruck eines anderen Datentyps könnten bei der Konvertierung die Ausgabedaten abgeschnitten oder nur teilweise angezeigt werden, oder es könnte ein Fehler zurückgegeben werden. Dies geschieht, wenn das Ergebnis zu kurz ist, um angezeigt zu werden. Konvertierungen in binary, char, nchar, nvarchar, varbinary oder varchar werden abgeschnitten, mit Ausnahme der in der folgenden Tabelle aufgelisteten Konvertierungen.

AusgangsdatentypZieldatentypErgebnis
int, smallint oder tinyintchar
varchar
Zu kurz zum Anzeigen
nchar
nvarchar
Fehler1
money, smallmoney, numeric, decimal, float oder realchar
varchar
Fehler1
nchar
nvarchar
Fehler1

1 Es wird ein Fehler zurückgegeben, da die Ergebnislänge zu kurz ist, um angezeigt zu werden.

In SQL Server wird sichergestellt, dass nur reversible Konvertierungen (d.h. Konvertierungen, bei denen konvertierte Datentypen in den ursprünglichen Datentyp zurückkonvertiert werden können) von Version zu Version die gleichen Ergebnisse erzielen. Im folgenden Beispiel wird eine solche Hin- und Rückkonvertierung veranschaulicht:

DECLARE @myval DECIMAL(5, 2);SET @myval = 193.57;SELECT CAST(CAST(@myval AS VARBINARY(20)) AS DECIMAL(10, 5));-- Or, using CONVERTSELECT CONVERT(DECIMAL(10, 5), CONVERT(VARBINARY(20), @myval));GO

Warnung

Erstellen Sie keine binary-Werte, um sie anschließend in einen Datentyp der numerischen Datentypkategorie zu konvertieren. SQL Server garantiert nicht, dass das Ergebnis einer Datentypkonvertierung von decimal oder numeric in binary dem Ergebnis entspricht, das zwischen Versionen von SQL Server erzielt wird.

Im folgenden Beispiel ist der resultierende Ausdruck zu klein, um angezeigt zu werden.

USE AdventureWorks2019;GOSELECT p.FirstName, p.LastName, SUBSTRING(p.Title, 1, 25) AS Title, CAST(e.SickLeaveHours AS CHAR(1)) AS [Sick Leave]FROM HumanResources.Employee eINNER JOIN Person.Person p ON e.BusinessEntityID = p.BusinessEntityIDWHERE NOT e.BusinessEntityID > 5;GO

Hier ist das Resultset.

FirstName LastName Title Sick Leave--------- ------------- ------- --------`Ken Sanchez NULL *Terri Duffy NULL *Roberto Tamburello NULL *Rob Walters NULL *Gail Erickson Ms. *(5 row(s) affected)

Beim Konvertieren von Datentypen mit unterschiedlichen Dezimalstellen gibt SQL Server manchmal einen abgeschnittenen oder einen gerundeten Ergebniswert zurück. In dieser Tabelle wird das Verhaltensmuster veranschaulicht.

FromToVerhalten
numericnumericRound
numericintTruncate
numericmoneyRound
moneyintRound
moneynumericRound
floatintTruncate
floatnumericRunde1
floatdatetimeRound
datetimeintRound

1 Die Konvertierung der float-Werte, die eine wissenschaftliche Schreibweise für decimal oder numeric verwenden, ist auf Werte mit einer Genauigkeit von 17Stellen beschränkt. Alle Werte mit einer Genauigkeit von mehr als 17 Stellen werden auf Null gerundet.

Die Werte 10.6496 und -10.6496 können z.B. während der Konvertierung in int- oder numeric-Types abgeschnitten oder gerundet werden:

SELECT CAST(10.6496 AS INT) AS trunc1, CAST(-10.6496 AS INT) AS trunc2, CAST(10.6496 AS NUMERIC) AS round1, CAST(-10.6496 AS NUMERIC) AS round2;

Die Ergebnisse der Abfrage sind in der folgenden Tabelle aufgeführt:

trunc1trunc2round1round2
10-1011-11

Falls eine Konvertierung von Datentypen vorgenommen wird, bei der der Zieldatentyp weniger Dezimalstellen aufweist als der Quelldatentyp, wird der Wert gerundet. Bei dieser Konvertierung wird beispielsweise $10.3497 zurückgegeben:

SELECT CAST(10.3496847 AS money);

SQL Server gibt eine Fehlermeldung zurück, wenn die nicht numerischen Daten char, nchar, varchar oder nvarchar in die Typen decimal, float, int oder numeric konvertiert werden. SQL Server gibt außerdem einen Fehler zurück, wenn eine leere Zeichenfolge (" ") in numeric oder decimal konvertiert wird.

Bestimmte datetime-Konvertierungen sind nicht deterministisch

Dies sind die Formate, bei denen die Konvertierung von „string“ in „datetime“ nicht deterministisch ist:

  • Alle Formate unter 1001
  • 106
  • 107
  • 109
  • 113
  • 130

1 Mit Ausnahme der Formate 20 und 21

Weitere Informationen finden Sie unter Nicht deterministische Konvertierung von Datumsliteralzeichenfolgen in DATE-Werte.

Ergänzende Zeichen (Ersatzpaare)

Wenn Sie in Versionen ab SQLServer2012 (11.x) Sortierungen ergänzender Zeichen verwenden, wird ein CAST-Vorgang von nchar oder nvarchar zu einem nchar- oder nvarchar-Typ von geringerer Länge in einem Ersatzzeichenpaar nicht abgeschnitten. Stattdessen wird er vor dem ergänzenden Zeichen abgeschnitten. Im folgenden Codefragment wird @x z.B. weggelassen, sodass nur 'ab' erhalten bleibt. Es ist nicht genügend Platz für das ergänzende Zeichen vorhanden.

DECLARE @x NVARCHAR(10) = 'ab' + NCHAR(0x10000);SELECT CAST(@x AS NVARCHAR(3));

Bei SC-Sortierungen entspricht das Verhalten von CONVERT dem von CAST. Weitere Informationen finden Sie im Abschnitt zu zusätzlichen Zeichen im Artikel Unicode-Unterstützung und Unterstützung von Sortierungen.

Kompatibilitätsunterstützung

In früheren Versionen von SQLServer ist das Standardformat für CAST- und CONVERT-Vorgänge bei den Datentypen time und datetime2 121, sofern keiner der Typen im Ausdruck einer berechneten Spalte verwendet wird. Für berechnete Spalten ist das Standardformat 0. Dieses Verhalten wirkt sich auf berechnete Spalten aus, wenn sie erstellt werden und in Abfragen mit automatischer Parametrisierung oder in Einschränkungsdefinitionen verwendet werden.

Bei einem Kompatibilitätsgrad von 110 und höher ist das Standardformat für CAST- und CONVERT-Vorgänge im Fall der Datentypen time und datetime2 immer 121. Basiert die Abfrage auf dem alten Verhalten, verwenden Sie einen Kompatibilitätsgrad unter 110, oder geben Sie in der betroffenen Abfrage explizit das Format 0 an.

Wert des KompatibilitätsgradsStandardformat für CAST und CONVERT1Standardformat für berechnete Spalte
<1101210
> = 110121121

1 Gilt nicht für berechnete Spalten

Ein Upgrade der Datenbank auf den Kompatibilitätsgrad110 und höher ändert keine Benutzerdaten, die auf dem Datenträger gespeichert wurden. Sie müssen diese Daten entsprechend manuell korrigieren. Haben Sie beispielsweise SELECT INFO zum Erstellen einer Tabelle von einer Quelle verwendet, die einen Ausdruck für eine berechnete Spalte (oben beschrieben) beinhaltet, werden die Daten mit dem Format 0 anstelle der Definition der berechneten Spalte an sich gespeichert. Sie müssen diese Daten manuell aktualisieren, um sie an das Format 121 anzupassen.

(Video) MS SQL tutorial on CONVERT and CAST functions

Beispiele

A. Verwenden von CAST und CONVERT

In diesen Beispielen werden die Namen der Produkte abgerufen, deren Listenpreis mit der Ziffer 3 beginnt. Die ListPrice-Werte werden in int-Werte konvertiert.

Verwenden Sie CAST:

USE AdventureWorks2019;GOSELECT SUBSTRING(Name, 1, 30) AS ProductName, ListPriceFROM Production.ProductWHERE CAST(ListPrice AS INT) LIKE '33%';GO

Verwenden Sie CONVERT:

USE AdventureWorks2019;GOSELECT SUBSTRING(Name, 1, 30) AS ProductName, ListPriceFROM Production.ProductWHERE CONVERT(INT, ListPrice) LIKE '33%';GO

Hier ist das Resultset. Das Beispielresultset ist bei CAST und CONVERT identisch.

ProductName ListPrice------------------------------ ---------------------LL Road Frame - Black, 58 337.22LL Road Frame - Black, 60 337.22LL Road Frame - Black, 62 337.22LL Road Frame - Red, 44 337.22LL Road Frame - Red, 48 337.22LL Road Frame - Red, 52 337.22LL Road Frame - Red, 58 337.22LL Road Frame - Red, 60 337.22LL Road Frame - Red, 62 337.22LL Road Frame - Black, 44 337.22LL Road Frame - Black, 48 337.22LL Road Frame - Black, 52 337.22Mountain-100 Black, 38 3374.99Mountain-100 Black, 42 3374.99Mountain-100 Black, 44 3374.99Mountain-100 Black, 48 3374.99HL Road Front Wheel 330.06LL Touring Frame - Yellow, 62 333.42LL Touring Frame - Blue, 50 333.42LL Touring Frame - Blue, 54 333.42LL Touring Frame - Blue, 58 333.42LL Touring Frame - Blue, 62 333.42LL Touring Frame - Yellow, 44 333.42LL Touring Frame - Yellow, 50 333.42LL Touring Frame - Yellow, 54 333.42LL Touring Frame - Yellow, 58 333.42LL Touring Frame - Blue, 44 333.42HL Road Tire 32.60(28 rows affected)

B. Verwenden von CAST mit arithmetischen Operatoren

Im folgenden Beispiel wird eine einzelne Spalte (Computed) berechnet. Hierbei wird der Gesamtumsatz des laufenden Jahres (SalesYTD) durch den Prozentsatz der Umsatzbeteiligung (CommissionPCT) geteilt. Dieser Wert wird auf die nächste ganze Zahl gerundet und anschließend mithilfe von CAST in einen int-Datentyp konvertiert.

USE AdventureWorks2019;GOSELECT CAST(ROUND(SalesYTD / CommissionPCT, 0) AS INT) AS ComputedFROM Sales.SalesPersonWHERE CommissionPCT != 0;GO

Hier ist das Resultset.

Computed------379753754346698349257144242176493899281101272030187254921262375029894820225078411923924689010166422012451133697688107(14 row(s) affected)

C. Verwenden von CAST zur Verkettung

Im folgenden Beispiel werden nicht auf Zeichen basierende Ausdrücke mithilfe von CAST verkettet. Verwendet wird die Datenbank AdventureWorksDW2019.

SELECT 'The list price is ' + CAST(ListPrice AS VARCHAR(12)) AS ListPriceFROM dbo.DimProductWHERE ListPrice BETWEEN 350.00 AND 400.00;

Hier ist das Resultset.

ListPrice------------------------The list price is 357.06The list price is 364.09The list price is 364.09The list price is 364.09The list price is 364.09

D: Verwenden von CAST zur Generierung besser lesbaren Texts

Im folgenden Beispiel wird CAST in der SELECT-Liste verwendet, um die Name-Spalte in eine char(10)-Spalte zu konvertieren. Verwendet wird die Datenbank AdventureWorksDW2019.

SELECT DISTINCT CAST(EnglishProductName AS CHAR(10)) AS Name, ListPriceFROM dbo.DimProductWHERE EnglishProductName LIKE 'Long-Sleeve Logo Jersey, M';GO

Hier ist das Resultset.

Name ListPrice---------- ---------Long-Sleev 31.2437Long-Sleev 32.4935Long-Sleev 49.99

E. Verwenden von CAST mit der LIKE-Klausel

In diesem Beispiel werden die SalesYTD-Werte der Spalte money in den Datentyp int und anschließend in den Datentyp char(20) konvertiert, damit sie mit der LIKE-Klausel verwendet werden können.

USE AdventureWorks2019;GOSELECT p.FirstName, p.LastName, s.SalesYTD, s.BusinessEntityIDFROM Person.Person AS pINNER JOIN Sales.SalesPerson AS s ON p.BusinessEntityID = s.BusinessEntityIDWHERE CAST(CAST(s.SalesYTD AS INT) AS CHAR(20)) LIKE '2%';GO

Hier ist das Resultset.

FirstName LastName SalesYTD BusinessEntityID---------------- ------------------- ---------------- -------------Tsvi Reiter 2811012.7151 279Syed Abbas 219088.8836 288Rachel Valdez 2241204.0424 289(3 row(s) affected)

F. Verwenden von CONVERT oder CAST mit typisierten XML-Daten

In den folgenden Beispielen wird die Konvertierung in typisierte XML-Daten mithilfe von CONVERT und mit XML-Datentyp und -Spalten (SQL Server) dargestellt.

In diesem Beispiel wird eine aus Leerzeichen, Text und Markup bestehende Zeichenfolge in typisierte XML-Daten konvertiert und alle bedeutungslosen Leerzeichen (begrenzender Leerraum zwischen Knoten) entfernt:

SELECT CONVERT(XML, '<root><child/></root>')

In diesem Beispiel wird eine ähnliche, aus Leerzeichen, Text und Markup bestehende Zeichenfolge in typisierte XML-Daten konvertiert und alle bedeutungslosen Leerzeichen (begrenzender Leerraum zwischen Knoten) beibehalten.

SELECT CONVERT(XML, '<root> <child/> </root>', 1)

In diesem Beispiel wird eine aus Leerzeichen, Text und Markup bestehende Zeichenfolge in typisierte XML-Daten umgewandelt:

SELECT CAST('<Name><FName>Carol</FName><LName>Elliot</LName></Name>' AS XML)

Weitere Beispiele finden Sie unter Erstellen von Instanzen der XML-Daten.

G. Verwenden von CAST und CONVERT mit datetime-Daten

Im folgenden Beispiel werden zuerst GETDATE()-Werte verwendet, um das aktuelle Datum und die aktuelle Uhrzeit darzustellen. CAST wird verwendet, um das aktuelle Datum und die aktuelle Uhrzeit in einen Zeichendatentyp zu ändern. Anschließend wird CONVERT verwendet, um das Datum und die Uhrzeit im ISO 8601-Format anzuzeigen.

SELECT GETDATE() AS UnconvertedDateTime, CAST(GETDATE() AS NVARCHAR(30)) AS UsingCast, CONVERT(NVARCHAR(30), GETDATE(), 126) AS UsingConvertTo_ISO8601;GO

Hier ist das Resultset.

UnconvertedDateTime UsingCast UsingConvertTo_ISO8601----------------------- ---------------------- ------------------------------2022-04-18 09:58:04.570 Apr 18 2022 9:58AM 2022-04-18T09:58:04.570(1 row(s) affected)

Das folgende Beispiel entspricht in etwa der Umkehrung des vorherigen Beispiels. In diesem Beispiel werden ein Datum und eine Uhrzeit als Zeichendaten angezeigt. CAST wird verwendet, um die Zeichendaten in datetime-Datentypen zu ändern. Anschließend wird CONVERT verwendet, um die Zeichendaten in den datetime-Datentyp zu ändern.

SELECT '2006-04-25T15:50:59.997' AS UnconvertedText, CAST('2006-04-25T15:50:59.997' AS DATETIME) AS UsingCast, CONVERT(DATETIME, '2006-04-25T15:50:59.997', 126) AS UsingConvertFrom_ISO8601;GO

Hier ist das Resultset.

UnconvertedText UsingCast UsingConvertFrom_ISO8601----------------------- ----------------------- ------------------------2006-04-25T15:50:59.997 2006-04-25 15:50:59.997 2006-04-25 15:50:59.997(1 row(s) affected)

H. Verwenden von CONVERT mit Binär- und Zeichendaten

Die folgenden Beispiele zeigen die Ergebnisse der Konvertierung von Binär- und Zeichendaten mit verschiedenen Formaten.

--Convert the binary value 0x4E616d65 to a character value.SELECT CONVERT(CHAR(8), 0x4E616d65, 0) AS [Style 0, binary to character];

Hier ist das Resultset.

Style 0, binary to character----------------------------Name(1 row(s) affected)

Dieses Beispiel zeigt, wie Format 1 das Abschneiden von Ergebnissen erzwingen kann. Die Zeichen 0x im Ergebnis erzwingen das Abschneiden.

SELECT CONVERT(CHAR(8), 0x4E616d65, 1) AS [Style 1, binary to character];

Hier ist das Resultset.

Style 1, binary to character------------------------------0x4E616D(1 row(s) affected)

Das folgende Beispiel zeigt, dass Format2 das Ergebnis nicht abschneidet, da die Zeichen 0x nicht im Ergebnis enthalten sind.

(Video) SQL Server Cast and Convert Functions

SELECT CONVERT(CHAR(8), 0x4E616d65, 2) AS [Style 2, binary to character];

Hier ist das Resultset.

Style 2, binary to character------------------------------4E616D65(1 row(s) affected)

Konvertieren Sie den Zeichenwert 'Name' in einen Binärwert.

SELECT CONVERT(BINARY(8), 'Name', 0) AS [Style 0, character to binary];

Hier ist das Resultset.

Style 0, character to binary----------------------------0x4E616D6500000000(1 row(s) affected)
SELECT CONVERT(BINARY(4), '0x4E616D65', 1) AS [Style 1, character to binary];

Hier ist das Resultset.

Style 1, character to binary----------------------------0x4E616D65(1 row(s) affected)
SELECT CONVERT(BINARY(4), '4E616D65', 2) AS [Style 2, character to binary];

Hier ist das Resultset.

Style 2, character to binary----------------------------------0x4E616D65(1 row(s) affected)

I. Konvertieren von date- und time-Datentypen

Das folgende Beispiel zeigt die Konvertierung von date-, time- und datetime-Datentypen.

DECLARE @d1 DATE, @t1 TIME, @dt1 DATETIME;SET @d1 = GETDATE();SET @t1 = GETDATE();SET @dt1 = GETDATE();SET @d1 = GETDATE();-- When converting date to datetime the minutes portion becomes zero.SELECT @d1 AS [DATE], CAST(@d1 AS DATETIME) AS [date as datetime];-- When converting time to datetime the date portion becomes zero-- which converts to January 1, 1900.SELECT @t1 AS [TIME], CAST(@t1 AS DATETIME) AS [time as datetime];-- When converting datetime to date or time non-applicable portion is dropped.SELECT @dt1 AS [DATETIME], CAST(@dt1 AS DATE) AS [datetime as date], CAST(@dt1 AS TIME) AS [datetime as time];

Stellen Sie sicher, dass die Werte innerhalb eines kompatiblen Bereichs liegen, wenn Sie eine Konvertierung von date in datetime oder datetime2 in Betracht ziehen. Der minimale Jahreswert für datetime ist 1753, während der minimale Jahreswert für date und datetime20001 beträgt.

DECLARE @d1 DATE, @dt1 DATETIME , @dt2 DATETIME2SET @d1 = '1492-08-03'--This is okay; Minimum YYYY for DATE is 0001SET @dt2 = CAST(@d1 AS DATETIME2)--This is okay; Minimum YYYY for DATETIME2 IS 0001SET @dt1 = CAST(@d1 AS DATETIME)--This will error with (Msg 242) "The conversion of a date data type to a datetime data type resulted in an out-of-range value."--Minimum YYYY for DATETIME is 1753

J. Verwenden von CONVERT mit datetime-Daten in unterschiedlichen Formaten

Im folgenden Beispiel werden zuerst GETDATE()-Werte verwendet. CONVERT wird verwendet, um alle Datums- und Uhrzeitformate anzuzeigen, die sich im Abschnitt Datums- und Uhrzeitformate dieses Artikels befinden.

FormatnummerBeispielabfrageBeispielergebnis
0SELECT CONVERT(NVARCHAR, GETDATE(), 0)Aug 23 2019 1:39PM
1SELECT CONVERT(NVARCHAR, GETDATE(), 1)08/23/19
2SELECT CONVERT(NVARCHAR, GETDATE(), 2)19.08.23
3SELECT CONVERT(NVARCHAR, GETDATE(), 3)23/08/19
4SELECT CONVERT(NVARCHAR, GETDATE(), 4)23.08.19
5SELECT CONVERT(NVARCHAR, GETDATE(), 5)23-08-19
6SELECT CONVERT(NVARCHAR, GETDATE(), 6)23Aug 19
7SELECT CONVERT(NVARCHAR, GETDATE(), 7)Aug23, 19
8, 24 oder 108SELECT CONVERT(NVARCHAR, GETDATE(), 8)13:39:17
9 oder 109SELECT CONVERT(NVARCHAR, GETDATE(), 9)Aug 23 2019 1:39:17:090PM
10SELECT CONVERT(NVARCHAR, GETDATE(), 10)08-23-19
11SELECT CONVERT(NVARCHAR, GETDATE(), 11)19/08/23
12SELECT CONVERT(NVARCHAR, GETDATE(), 12)190823
13 oder 113SELECT CONVERT(NVARCHAR, GETDATE(), 13)23Aug 2019 13:39:17:090
14 oder 114SELECT CONVERT(NVARCHAR, GETDATE(), 14)13:39:17:090
20 oder 120SELECT CONVERT(NVARCHAR, GETDATE(), 20)2019-08-23 13:39:17
21, 25 oder 121SELECT CONVERT(NVARCHAR, GETDATE(), 21)2019-08-23 13:39:17.090
22SELECT CONVERT(NVARCHAR, GETDATE(), 22)08/23/19 1:39:17 PM
23SELECT CONVERT(NVARCHAR, GETDATE(), 23)2019-08-23
101SELECT CONVERT(NVARCHAR, GETDATE(), 101)08/23/2019
102SELECT CONVERT(NVARCHAR, GETDATE(), 102)2019.08.23
103SELECT CONVERT(NVARCHAR, GETDATE(), 103)23/08/2019
104SELECT CONVERT(NVARCHAR, GETDATE(), 104)23.08.2019
105SELECT CONVERT(NVARCHAR, GETDATE(), 105)23-08-2019
106SELECT CONVERT(NVARCHAR, GETDATE(), 106)23Aug 2019
107SELECT CONVERT(NVARCHAR, GETDATE(), 107)23. August 2019
110SELECT CONVERT(NVARCHAR, GETDATE(), 110)08-23-2019
111SELECT CONVERT(NVARCHAR, GETDATE(), 111)2019/08/23
112SELECT CONVERT(NVARCHAR, GETDATE(), 112)20190823
113SELECT CONVERT(NVARCHAR, GETDATE(), 113)23Aug 2019 13:39:17.090
120SELECT CONVERT(NVARCHAR, GETDATE(), 120)2019-08-23 13:39:17
121SELECT CONVERT(NVARCHAR, GETDATE(), 121)2019-08-23 13:39:17.090
126SELECT CONVERT(NVARCHAR, GETDATE(), 126)2019-08-23T13:39:17.09
127SELECT CONVERT(NVARCHAR, GETDATE(), 127)2019-08-23T13:39:17.09
130SELECT CONVERT(NVARCHAR, GETDATE(), 130)22 ذو الحجة 1440 1:39:17.090P
131SELECT CONVERT(NVARCHAR, GETDATE(), 131)22/12/1440 1:39:17.090PM

K. Auswirkungen der Datentyprangfolge in zulässigen Konvertierungen

Im folgenden Beispiel wird eine Variable des Typs varchar(10) definiert. Dieser wird dann ein Integerwert zugewiesen. Anschließend wird eine SELECT-Anweisung für die Verkettung der Variablen mit einer Zeichenfolge ausgeführt.

DECLARE @string VARCHAR(10);SET @string = 1;SELECT @string + ' is a string.' AS Result

Hier ist das Resultset.

Result-----------------------1 is a string.

Der int-Wert1 wurde in den Typ varchar konvertiert.

Im folgenden Beispiel wird eine ähnliche Abfrage gezeigt, in der jedoch eine int-Variable verwendet wird:

DECLARE @notastring INT;SET @notastring = '1';SELECT @notastring + ' is not a string.' AS Result

In diesem Fall löst die SELECT-Anweisung den folgenden Fehler aus:

Msg 245, Level 16, State 1, Line 3Conversion failed when converting the varchar value ' is not a string.' to data type int.

Zur Auswertung des Ausdrucks @notastring + ' is not a string.' gilt Folgendes: SQL Server muss den Regeln der Datentyprangfolge folgen, um die implizite Konvertierung abzuschließen, bevor das Ergebnis des Ausdrucks berechnet werden kann. Da int eine höhere Rangfolge als varchar hat, versucht SQLServer, die Zeichenfolge in eine ganze Zahl zu konvertieren. Dieser Vorgang schlägt fehl, da diese Zeichenfolge nicht in eine ganze Zahl konvertiert werden kann.

Wenn eine konvertierbare Zeichenfolge angegeben wird, wird die Anweisung wie im folgenden Beispiel erfolgreich ausgeführt:

DECLARE @notastring INT;SET @notastring = '1';SELECT @notastring + '1'

In diesem Fall kann die Zeichenfolge '1' in den Integerwert 1 konvertiert werden, sodass die SELECT-Anweisung den Wert 2 zurückgibt. Wenn die angegebenen Datentypen Integerwerte sind, führt der Operator+ nicht zu einer Zeichenfolgenverkettung, sondern zu einer mathematischen Addition.

Beispiele: Azure Synapse Analytics und Analytics-Plattformsystem (PDW)

L. Verwenden von CAST und CONVERT

In diesem Beispiele werden die Namen der Produkte abgerufen, deren Listenpreis mit der Ziffer 3 beginnt. Der ListPrice-Wert dieser Produkte wird in einen int-Wert konvertiert. Verwendet wird die Datenbank AdventureWorksDW2019.

SELECT EnglishProductName AS ProductName, ListPriceFROM dbo.DimProductWHERE CAST(ListPrice AS int) LIKE '3%';

Dieses Beispiel zeigt dieselbe Abfrage mit CONVERT anstatt CAST. Verwendet wird die Datenbank AdventureWorksDW2019.

SELECT EnglishProductName AS ProductName, ListPriceFROM dbo.DimProductWHERE CONVERT(INT, ListPrice) LIKE '3%';

M. Verwenden von CAST mit arithmetischen Operatoren

Im folgenden Beispiel wird eine einzelne Spalte berechnet. Hierbei wird der Einzelpreis des Produkts (UnitPrice) durch den Prozentsatz für den Abzug (UnitPriceDiscountPct) geteilt. Dieses Ergebnis wird in einen int-Datentyp konvertiert, nachdem es auf die nächste ganze Zahl gerundet wurde. In diesem Beispiel wird die AdventureWorksDW2019-Datenbank verwendet.

SELECT ProductKey, UnitPrice,UnitPriceDiscountPct, CAST(ROUND (UnitPrice*UnitPriceDiscountPct,0) AS int) AS DiscountPriceFROM dbo.FactResellerSalesWHERE SalesOrderNumber = 'SO47355' AND UnitPriceDiscountPct > .02;

Hier ist das Resultset.

ProductKey UnitPrice UnitPriceDiscountPct DiscountPrice---------- --------- -------------------- -------------323 430.6445 0.05 22213 18.5043 0.05 1456 37.4950 0.10 4456 37.4950 0.10 4216 18.5043 0.05 1

N. Verwenden von CAST mit der LIKE-Klausel

Im folgenden Beispiel wird die Spalte moneyListPrice in eine Spalte des Typs int und anschließend in eine Spalte des Typs char(20) umgewandelt, damit sie mit der LIKE-Klausel verwendet werden kann. In diesem Beispiel wird die AdventureWorksDW2019-Datenbank verwendet.

SELECT EnglishProductName AS Name, ListPriceFROM dbo.DimProductWHERE CAST(CAST(ListPrice AS INT) AS CHAR(20)) LIKE '2%';

O. Verwenden von CAST und CONVERT mit datetime-Daten

Im folgenden Beispiel werden das aktuelle Datum und die aktuelle Uhrzeit dargestellt. CAST wird verwendet, um das aktuelle Datum und die aktuelle Uhrzeit in einen Zeichendatentyp zu ändern. Anschließend werden das Datum und die Uhrzeit mithilfe von CONVERT im ISO8601-Format angezeigt. In diesem Beispiel wird die AdventureWorksDW2019-Datenbank verwendet.

SELECT TOP(1) SYSDATETIME() AS UnconvertedDateTime, CAST(SYSDATETIME() AS NVARCHAR(30)) AS UsingCast, CONVERT(NVARCHAR(30), SYSDATETIME(), 126) AS UsingConvertTo_ISO8601FROM dbo.DimCustomer;

Hier ist das Resultset.

UnconvertedDateTime UsingCast UsingConvertTo_ISO8601--------------------- --------------------------- ---------------------------07/20/2010 1:44:31 PM 2010-07-20 13:44:31.5879025 2010-07-20T13:44:31.5879025

Das folgende Beispiel entspricht in etwa der Umkehrung des vorherigen Beispiels. In diesem Beispiel werden ein Datum und eine Uhrzeit als Zeichendaten angezeigt. CAST wird verwendet, um die Zeichendaten in datetime-Datentypen zu ändern. Anschließend wird CONVERT verwendet, um die Zeichendaten in den datetime-Datentyp zu ändern. In diesem Beispiel wird die AdventureWorksDW2019-Datenbank verwendet.

SELECT TOP(1) '2010-07-25T13:50:38.544' AS UnconvertedText,CAST('2010-07-25T13:50:38.544' AS DATETIME) AS UsingCast, CONVERT(DATETIME, '2010-07-25T13:50:38.544', 126) AS UsingConvertFrom_ISO8601FROM dbo.DimCustomer;

Hier ist das Resultset.

UnconvertedText UsingCast UsingConvertFrom_ISO8601----------------------- ----------------------- ------------------------2010-07-25T13:50:38.544 07/25/2010 1:50:38 PM 07/25/2010 1:50:38 PM

Weitere Informationen

  • FORMAT (Transact-SQL)
  • STR (Transact-SQL)
  • SELECT (Transact-SQL)
  • Systemfunktionen (Transact-SQL)
  • Collation and Unicode Support

Nächste Schritte

  • Rangfolge der Datentypen (Transact-SQL)
  • Datentypkonvertierung (Datenbank-Engine)
  • Schreiben internationaler Transact-SQL-Anweisungen

FAQs

What is difference between CAST and convert in SQL Server? ›

The CAST function is used to convert a data type without a specific format. The CONVERT function does converting and formatting data types at the same time. 5.In terms of syntax, both functions have the optional parameter of length.

Which is faster CAST or convert? ›

Summary. Casting and converting are ways in which we can change a value from one type to another; casting is faster but more prone to errors, while conversion is more computationally expensive but also more forgiving.

Does To_char work in SQL Server? ›

In Oracle, TO_CHAR function converts a datetime value (DATE, TIMESTAMP data types i.e.) to a string using the specified format. In SQL Server, you can use CONVERT or CAST functions to convert a datetime value (DATETIME, DATETIME2 data types i.e.) to a string.

What is CAST () in SQL? ›

The SQL CAST function converts the data type of an expression to the specified data type. For a list of the data types supported by InterSystems SQL, see Data Types. CAST is similar to CONVERT, with these differences: CONVERT is more flexible than CAST.

Is casting the same as converting? ›

Type casting is a mechanism in which one data type is converted to another data type using a casting () operator by a programmer. Type conversion allows a compiler to convert one data type to another data type at the compile time of a program or code. It can be used both compatible data type and incompatible data type.

What is the difference between casting and converting? ›

1. In type casting, a data type is converted into another data type by a programmer using casting operator. Whereas in type conversion, a data type is converted into another data type by a compiler.

Does casting permanently change data type? ›

Casting does not permanently alter the data type of a value; it expresses the value in a more convenient form. Casting user-defined data types into built-in types allows client programs to manipulate data types without knowledge of their internal structure.

Why do we use CAST in SQL Server? ›

The SQL CAST function is mainly used to convert the expression from one data type to another data type. If the SQL Server CAST function is unable to convert a declaration to the desired data type, this function returns an error. We use the CAST function to convert numeric data into character or string data.

Which is better parse or convert? ›

Convert. ToInt32 allows null value, it doesn't throw any errors Int. parse does not allow null value, and it throws an ArgumentNullException error.

What can we use instead of TO_CHAR in SQL? ›

Oracle uses TO_CHAR() ; SQL Server uses CONVERT() . One option is to define the functions YEAR() , MONTH() , and DAY() in Oracle and then use string concatenation (via the CONCAT() ) function to combine the data.

What is difference between TO_CHAR and TO_DATE? ›

To_char formats a DATE into a string using the given format mask. To_date converts a STRING into a date using the format mask. Your client then displays that date using a format mask (set at session/instance level).

Which two tasks can you perform by using the TO_CHAR? ›

The purpose of the Oracle TO_CHAR function is to convert either a number or a date value to a string value.

What is convert in SQL? ›

In SQL Server (Transact-SQL), the CONVERT function converts an expression from one datatype to another datatype. If the conversion fails, the function will return an error. Otherwise, it will return the converted value. TIP: Use the TRY_CONVERT function to return a NULL (instead of an error) if the conversion fails.

What is CAST example? ›

Verb Seaweed was cast up by the waves. The tree cast a long shadow on the lawn. How many votes were cast? Noun She has a cast on her arm.

What is a CAST data type? ›

A data type that can be changed to another data type is castable from the source data type to the target data type. The casting of one data type to another can occur implicitly or explicitly. The cast functions or CAST specification (see CAST specification) can be used to explicitly change a data type.

What are the 4 types of casting? ›

Hot forming processes, such as die-casting, investment casting, plaster casting, and sand casting, each provide their own unique manufacturing benefits.

What are the 3 ways of casting? ›

Mainly there are 3 Different Types of Casting processes. They are Die casting, Investment casting, and Sand casting. Each of them provides its own unique fabrication benefits. The casting manufacturing method is the process of pouring molten metal materials into a mold.

What are the two types of casting? ›

The modern casting process is subdivided into two main categories: expendable and non-expendable casting. It is further broken down by the mold material, such as sand or metal, and pouring method, such as gravity, vacuum, or low pressure.

What are the three types of conversion? ›

The possible types of conversion are standard conversion, no conversion, and user-defined nonstandard conversion.

What is an alternative to casting? ›

Extrusion is perhaps the closest alternative to casting, as molten material and a die are the main shaping features in both. The major benefit of extruding is that it can fabricate complex cross-sections.

Does casting change the type? ›

Casting doesn't actually change the type of the data within the variable, for example the following code with not work as expected since the variable x is still holds a number.

What is the disadvantage of type casting? ›

Disadvantage of Explicit Type casting in Java

When you will use type casting in Java, you can lose some information or data. Accuracy can be lost while using type casting. When a double is cast to an int, the fractional part of a double is discarded which causes the loss of fractional part of data.

What are the dangers of typecasting? ›

You might permanently change the value of the variable. C. You might temporarily lose part of the data - such as truncating a float when typecasting to an int.

Does casting change the dynamic or static type? ›

Casting changes what the compiler sees! I say that as "casting changes the static type of a variable". Calling f1() on var1 calls the derieved class version of f1(); I call "der" as the dynamic or run time type of the variable var1.

What is the purpose of casting? ›

The Purpose of your Cast: Your cast is applied to immobilize your bones, ligaments, and muscles in the proper position to promote healing. The cast permits early activity. The following instructions will help you take care of your casted extremity.

What is the function of CAST? ›

CAST is a complex function that transforms one or more values from one data type into another.

How does the CAST function work? ›

In SQL Server (Transact-SQL), the CAST function converts an expression from one datatype to another datatype. If the conversion fails, the function will return an error. Otherwise, it will return the converted value. TIP: Use the TRY_CAST function to return a NULL (instead of an error) if the conversion fails.

Which parser is faster? ›

SAX is faster because DOM parsers often use a SAX parser to parse a document internally, then do the extra work of creating and manipulating objects to represent each and every node, even if the application doesn't care about them.

Is Parse still used? ›

Parse is a widely used open-source framework for the development of application backends.

What is the advantage of data conversion? ›

The goal of data conversion is to prevent data loss or corruption by maintaining the integrity of the data and embedded structures. This can be done easily if the destination format supports the same features and data structures as the source data.

Can you convert data types in SQL? ›

Data types can be converted either implicitly or explicitly. Implicit conversions are not visible to the user. SQL Server automatically converts the data from one data type to another. For example, when a smallint is compared to an int, the smallint is implicitly converted to int before the comparison proceeds.

How to convert number to character in SQL? ›

The following SQL statement converts integer data to characters using CAST(): SELECT item_name, CAST(item_quantity AS CHAR(8)) FROM items; As with CONVERT(), CAST() can use any data type which receives characters: VARCHAR, NCHAR and NVARCHAR.

What is CHR 38 in SQL? ›

The American Standard Code for Information Interchange (ASCII) is one of the generally accepted standardized numeric codes for representing character data in a computer.
...
Replacing ASCII Printable Characters.
Numeric CodeCharacterDescription
38&Ampersand
4 more rows
Aug 7, 2017

How do I change a char to a date? ›

You can use the as. Date( ) function to convert character data to dates. The format is as. Date(x, "format"), where x is the character data and format gives the appropriate format.

How to use TO_CHAR and TO_DATE? ›

to_char function is used to convert the given data into character.... to_date is used to convert the given data into date data formate data type.... eg: to_date('070903', 'MMDDYY' ) would return a date value of July 9, 2003.

How do I fix conversion failed when converting date and or time from character string? ›

The way to solve this is to use the (slightly adapted) ISO-8601 date format that is supported by SQL Server - this format works always - regardless of your SQL Server language and dateformat settings.

What is the purpose of CAST function in SQL Server? ›

The CAST() function converts a value (of any type) into a specified datatype.

What is CONVERT in SQL Server? ›

In SQL Server (Transact-SQL), the CONVERT function converts an expression from one datatype to another datatype. If the conversion fails, the function will return an error. Otherwise, it will return the converted value. TIP: Use the TRY_CONVERT function to return a NULL (instead of an error) if the conversion fails.

Why using CAST in SQL? ›

The SQL CAST function is mainly used to convert the expression from one data type to another data type. If the SQL Server CAST function is unable to convert a declaration to the desired data type, this function returns an error. We use the CAST function to convert numeric data into character or string data.

Which is better parse or CONVERT? ›

Convert. ToInt32 allows null value, it doesn't throw any errors Int. parse does not allow null value, and it throws an ArgumentNullException error.

Why is a CAST important? ›

Casts are used to immobilize injured bones, promote healing, and reduce pain and swelling while the bone heals. They are sometimes put on an arm or leg after surgery to protect the bone and ensure it remains in proper alignment.

What is the purpose of a CAST? ›

Casts and splints are orthopedic devices that are used to protect and support broken or injured bones and joints. They help to immobilize the injured limb to keep the bone in place until it fully heals. Casts differ from splints because they provide more support and protection for a limb that is injured or broken.

What is the difference between change and convert? ›

change is to become something different while convert is to transform or change (something) into another form, substance, state, or product.

Is convert () a function? ›

Converts a number from one measurement system to another. For example, CONVERT can translate a table of distances in miles to a table of distances in kilometers.

Is Casting necessary? ›

Why Is Casting Important? Casting is one of the most crucial parts of the filmmaking process because performance can significantly impact how audiences and critics receive a film.

Is type casting bad? ›

Being typecast can be lucrative if an actor enjoys the roles they're playing, but it can also feel stifling because it's difficult for the actor to grow and try new things. It's very common for new actors to worry about being typecast because they don't want to be locked into only playing a particular character type.

When should a type cast be used? ›

We can use the process of type casting to convert the character (char) data type to the int (integer) data type in C. When we are performing a conversion between these two, the resultant value would be an integer (int) data type. It is because the int data type is comparatively bigger than the char data type in C.

Videos

1. CONVERT, CAST | CONVERSIÓN DE DATOS EN SQL TRANSACT
(Rodrigo Online ROL)
2. SQL CAST VS CONVERT Function
(Lotusamaze)
3. Tutoriel Transact SQL 7 : Conversion Variables - CAST et CONVERT.
(The Arab Programmer - المبرمج العربي)
4. T-SQL: Cast vs Convert vs Parse vs Format
(Jan)
5. CAST and CONVERT | SQL Server
(The SQL Academy)
6. Cast and Convert functions in SQL Server Part 28
(kudvenkat)
Top Articles
Latest Posts
Article information

Author: Jamar Nader

Last Updated: 03/06/2023

Views: 6357

Rating: 4.4 / 5 (75 voted)

Reviews: 82% of readers found this page helpful

Author information

Name: Jamar Nader

Birthday: 1995-02-28

Address: Apt. 536 6162 Reichel Greens, Port Zackaryside, CT 22682-9804

Phone: +9958384818317

Job: IT Representative

Hobby: Scrapbooking, Hiking, Hunting, Kite flying, Blacksmithing, Video gaming, Foraging

Introduction: My name is Jamar Nader, I am a fine, shiny, colorful, bright, nice, perfect, curious person who loves writing and wants to share my knowledge and understanding with you.