SQLShack
Einführung
Eine häufige Aufgabe für Neulinge ist zu lernen, wie man ein SQL konvertieren Datum und arbeiten, um sie zu konvertieren Datum in andere Datentypen oder umwandeln andere Datentypen zu Date.
Hier in diesem Artikel werden wir erklären, wie man arbeiten und konvertieren Daten in verschiedene Formate oder umgekehrt.
Anforderungen
- SQL Server installiert. Ab SQL Server 2008
Beispiel
Das erste Beispiel ist einfach, wir haben eine varchar Spalte mit einem Datum in einer Tabelle, aber wir müssen das varchar in ein Datum konvertieren. Wir müssen eine SQL-Konvertierung des Datums durchführen.
Hier ist das Skript zum Erstellen der Tabelle mit Daten:
1
2
3
4
5
6
7
8
9
10
11
12
|
CREATE TABLE .(
NOT NULL,
(100) NULL,
CONSTRAINT PRIMARY KEY CLUSTERED
(
ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON
) ON
GO
INSERT . (, ) WERTE (1, N’02-03-2005′)
INSERT . (, ) WERTE (2, N’03-05-2006′)
INSERT . (, ) VALUES (3, N’04-05-2011′)
|
Wir wollen die Spalte Datum von nvarchar(100) in ein Datum umwandeln.
Dazu werden wir versuchen, den Entwurf der Tabelle zu ändern:
![](https://www.sqlshack.com/wp-content/uploads/2019/04/ssms-design-table.png)
Wir werden versuchen, den Datentyp in smalldatetime zu ändern:
![](https://www.sqlshack.com/wp-content/uploads/2019/04/change-varchar-to-smalldatime-in-ssms.png)
Sie erhalten die folgende Fehlermeldung:
Das Speichern von Änderungen ist nicht zulässig. Die Änderungen, die Sie vorgenommen haben, erfordern, dass die folgenden Tabellen gelöscht und neu erstellt werden. Sie haben entweder Änderungen an einer Tabelle vorgenommen, die nicht neu erstellt werden kann, oder Sie haben die Option Speichern von Änderungen, die eine Neuerstellung der Tabelle erfordern, verhindern aktiviert.
Um diesen Fehler zu beheben, gehen Sie in SSMS in das Menü Extras > Optionen:
![](https://www.sqlshack.com/wp-content/uploads/2019/04/change-options-in-ssms.png)
Gehen Sie in Optionen zu Designer >Tabellen- und Datenbankdesigner und deaktivieren Sie die Option Speichern von Änderungen, die eine Neuerstellung der Tabelle erfordern, verhindern:
![](https://www.sqlshack.com/wp-content/uploads/2019/04/uncheck-prevent-saving-changes-that-require-table.png)
Mit dieser Option wird die Option zum Verhindern des Speicherns der Neuerstellung von Tabellen deaktiviert. Wenn Sie den Datentyp einer Spalte ändern, muss die Tabelle neu erstellt werden.
Jetzt können Sie den Entwurf speichern und Ihre Tabelle wird in ein Datum konvertiert und die SQL-Konvertierung ist abgeschlossen:
![](https://www.sqlshack.com/wp-content/uploads/2019/04/sql-convert-date-date-time-results-after-convert.png)
Konvertierungsfunktionen
T-SQL enthält Funktionen zur Konvertierung von Datentypen. Wir werden CAST und CONVERT verwenden, um eine SQL-Konvertierung von Daten durchzuführen.
Beginnen wir zunächst mit CAST:
Wie konvertiert man mit CAST von varchar, nvarchar, char, nchar in sql date
Das folgende Beispiel zeigt, wie man mit der Funktion CAST Zeichen in einen Datentyp datetime date konvertiert:
1
2
|
declare @vardate varchar(100)=’03-04-2016′
select CAST(@vardate AS datetime) AS dataconverted;
|
Das Beispiel deklariert eine Variable namens vardate und dann wird diese Variable, die ein varchar ist, mit der CAST-Funktion in datetime umgewandelt.
Hinweis: Weitere Informationen über die CAST-Funktion finden Sie unter diesem Link: CAST und CONVERT (Transact-SQL)
Wie konvertiert man in SQL ein Datum von varchar, nvarchar, char, nchar in ein Datum mit CONVERT
CONVERT ist eine Funktion, die dasselbe kann wie CAST im vorherigen Szenario.
1
2
|
declare @vardate varchar(100)=’03-04-2016′
select CONVERT(datetime, @vardate) as dataconverted
|
Der T-SQL-Code macht dasselbe wie cast, verwendet aber die CONVERT-Funktion. Der Vorteil von CONVERT ist, dass Sie das Format des Datums mit dem Argument style leicht ändern können.
Wenn Sie zum Beispiel das Datum im ISO-Format haben möchten, können Sie den folgenden T-SQL-Satz verwenden:
1
|
select CONVERT(nvarchar(30),getdate(), 121) as isoformat
|
Wie man in T-SQL das Datum in verschiedene Formate umwandelt
Das folgende Beispiel zeigt, wie man das Datumsformat in verschiedene Formate umwandelt.
Für Japanisches Format:
1
|
select CONVERT(nvarchar(30),getdate(), 111) as Japanformat
|
Für USA Format:
1
|
select CONVERT(nvarchar(30),getdate(), 110) as USAformat
|
Für das ANSI-Format:
1
|
select CONVERT(nvarchar(30),getdate(), 102) as ANSIformat
|
Für das britische Format:
1
|
select CONVERT(nvarchar(30),getdate(), 103) as Britishformat
|
Für das deutsche Format:
1
|
select CONVERT(nvarchar(30),getdate(), 104) as Germanformat
|
Für das italienische Format:
1
|
select CONVERT(nvarchar(30),getdate(), 105) as Italianformat
|
Für das europäische Standardformat:
1
|
select CONVERT(nvarchar(30),getdate(), 113) as EuropeDefaultformat
|
Für ODBC Canonical:
1
|
select CONVERT(nvarchar(30),getdate(), 120) as ODBCCanonicalformat
|
Sie haben immer die Möglichkeit, die Funktion FORMAT zu verwenden, um das Datum in dem von Ihnen gewünschten Format zu erhalten:
1
|
SELECT FORMAT( getdate(), ‚dd/MM/yy‘)
|
FORMAT ist einfacher im Umgang mit Datumsangaben und verwendet das von Ihnen bevorzugte Format, da Sie den Stil nicht kennen müssen. Meiner Erfahrung nach sehe ich jedoch eine Menge Code, der die Funktionen CAST und CONVERT verwendet, so dass es besser ist, sie zu kennen.
Hinweis: Weitere Informationen über die Funktion FORMAT finden Sie unter diesem Link: FORMAT (Transact-SQL)
Probleme im Zusammenhang mit SQL-Operationen zur Datumsumwandlung
Wenn Sie versuchen, in ein Datum zu konvertieren, ist dies nicht immer möglich. Das folgende Beispiel zeigt einen häufigen Fehler:
1
2
|
declare @vardate varchar(100)=’11242016′
select CONVERT(datetime, @vardate) as dataconverted
|
Die Fehlermeldung lautet wie folgt:
Msg 242, Level 16, State 3, Line 22
Die Konvertierung eines varchar-Datentyps in einen datetime-Datentyp führte zu einem Wert außerhalb des Bereichs.
Sie benötigen Trennzeichen für das Datum wie ein „/“, ein „.“ oder ein „-„.
Im folgenden Beispiel wird die Zeichenkette von 11242016 in 11-24-2016 geändert und dann in ein SQL-Datum konvertiert:
1
2
3
4
5
|
declare @vardate varchar(100)=’11242016′
set @vardate= SUBSTRING(@vardate, 1, 2)+‘-‚+ SUBSTRING(@vardate, 3, 2)+‘-‚+SUBSTRING(@vardate, 5, 4)
select CONVERT(date, @vardate) as dataconverted
|
Wir verwenden substring, um das „-“ zu verketten, um ein akzeptables Datumsformat zu verwenden, und verwenden dann die Funktion CONVERT, um die Zeichen in ein sql-Datum zu konvertieren.
Datumsdatentypen
In SQL Server gibt es mehrere Datumsdatentypen:
- Time gibt die Stunden, Minuten, Sekunden und Nanosekunden zurück (hh:mm:ss.nnnnnnn)
- Date gibt das Jahr, die Monate und Tage zurück (yyyy-mm-dd)
- Datetime gibt Daten in diesem Format zurück: JJJJ-MM-TT hh:mm:ss
- Smalldatetime gibt Datum in diesem Format zurück: JJJJ-MM-TT hh:mm:ss
- Datetime2 ist ähnlich wie Datetime, hat aber eine höhere Genauigkeit (JJJJ-MM-TT hh:mm:ss)
- Datetimeoffset hat die Genauigkeit von datetime2, wird aber für Zeitzonen in UTC verwendet
SQL convert date to integer
Wenn Sie CONVERT oder CAST verwenden, um eine Datetime in eine Ganzzahl umzuwandeln, wird die Anzahl der Tage seit 1900 bis zum angegebenen Datum zurückgegeben.
Zum Beispiel zeigt der folgende T-SQL-Code die Anzahl der Tage von 1900 bis heute an:
1
|
SELECT CONVERT(INT, GETDATE())
|
Sie können auch das Jahr, die Monate, die Tage usw. eines Datetime-Werts in Ganzzahlen umwandeln. Der folgende Code zeigt, wie man Tag, Monat und Jahr eines Datetime-Wertes in Integer-Variablen speichert:
1
2
3
4
5
|
declare @year int = year(getdate())
declare @month int = month(getdate())
declare @day int = day(getdate())
select @year as year,@month as month,@day as day
|
Häufige Fragen zur Konvertierung von Datumsangaben in SQL Server
Hinweis: Der folgende Link enthält FAQ zu Funktionen und Datumsangaben in SQL Server: FAQ über Datumsangaben in SQL Server
Zusammenfassungen
In diesem Artikel haben wir gelernt, wie man ein SQL convert date in SQL Server durchführt. Wir haben gelernt, wie man den Datentyp in einer Tabelle ändert und wie man die Funktionen CAST, CONVERT und FORMAT verwendet. Wir haben auch die verschiedenen Typen von SQL-Datentypen kennengelernt.
- Autor
- Recent Posts
![](https://s33046.pcdn.co/wp-content/uploads/gravatar/danielcalbimonte.jpg)
Er hat für die Regierung, Ölgesellschaften, Websites, Zeitschriften und Universitäten auf der ganzen Welt gearbeitet. Daniel spricht auch regelmäßig auf SQL Server-Konferenzen und bloggt. Er schreibt SQL Server-Schulungsmaterial für Zertifizierungsprüfungen.
Er hilft auch bei der Übersetzung von SQLShack-Artikeln ins Spanische
Alle Beiträge von Daniel Calbimonte anzeigen
![](https://s33046.pcdn.co/wp-content/uploads/gravatar/danielcalbimonte.jpg)
- SQL-Interviewfragen – 3. September, 2020
- SQL Zertifizierungen – August 7, 2020
- TSQL Geschichte – September 3, 2019