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

  1. 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:

Wir werden versuchen, den Datentyp in smalldatetime zu ändern:

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:

Gehen Sie in Optionen zu Designer >Tabellen- und Datenbankdesigner und deaktivieren Sie die Option Speichern von Änderungen, die eine Neuerstellung der Tabelle erfordern, verhindern:

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:

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
Daniel Calbimonte ist ein Microsoft Most Valuable Professional, Microsoft Certified Trainer und Microsoft Certified IT Professional für SQL Server. Er ist ein versierter SSIS-Autor, Dozent an IT-Akademien und hat über 13 Jahre Erfahrung in der Arbeit mit verschiedenen Datenbanken.
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

Letzte Beiträge von Daniel Calbimonte (alle anzeigen)
  • SQL-Interviewfragen – 3. September, 2020
  • SQL Zertifizierungen – August 7, 2020
  • TSQL Geschichte – September 3, 2019

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.