Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Konvertieren von DateTime in das Format YYYY-MM-DD in SQL Server

Eine SQL Server-Datenbank kann eine Vielzahl von Datentypen speichern, z. B. Zahlen, Textzeichenfolgen, boolesche Werte, Datumsangaben usw. Das Speichern und Verarbeiten solcher Daten hat jedoch ihre Besonderheiten. Der aktuelle Artikel konzentriert sich auf das Speichern von Daten in einer SQL Server-Datenbanktabelle und das Konvertieren verschiedener Datumstypen in das SQL Server-Format YYYY-MM-DD und umgekehrt.

Fangen wir an!

JJJJ-MM-TT – das Datumsformat in SQL Server

Das SQL Server-Datenformat JJJJ-MM-TT schlägt vor, dass das Jahr wird durch vier Ziffern gekennzeichnet, z. B. 2021. Der Monat wird als nächstes in 2 Ziffern von 1-12 angegeben – z. B. wäre Juni 06. Schließlich der Tag des Monats wird zweistellig dargestellt, z. B. 20. Somit ist das Datum 06. Juni 2021 , wird als 2021-06-21 gespeichert. Es ist das Format JJJJ-MM-TT für Datumsangaben in SQL Server-Datenbanken.

In SQL Server können Sie Datumsangaben entweder mit dem Datentyp Date oder DateTime speichern. Der Unterschied zwischen den Datentypen Date und DateTime liegt im Detaillierungsgrad, in dem beide Datentypen die Datumsinformationen speichern.

  • Die DateTime Datentyp speichert das Datum zusammen mit der Zeit Informationen in Stunden , Minuten , und Sekunden .
  • Das Datum Der Datentyp erlaubt Ihnen nur, das Datum zu speichern Informationen ohne die Zeitinformationen.

Das folgende Beispiel demonstriert den Unterschied zwischen den Datentypen Date und DateTime.

Zuerst erstellen wir einen Dummy MyDatabase Datenbank und eine Tabelle (Patient ) darin.

Der Patient Die Tabelle hat 5 Spalten:ID, Name, Geschlecht, Geburtsdatum (Geburtsdatum) und Geburtsdatum (Todsdatum). Der Typ der DOB-Spalte ist Date, wohingegen die DOD-Spalte den DateTime-Datentyp hat.

CREATE DATABASE MyDatabase

USE MyDatabase
CREATE TABLE Patient

(
Id INT PRIMARY KEY IDENTITY(1,1),
Name VARCHAR (50) NOT NULL,
Gender VARCHAR (50),
DOB Date,
DOD DateTime
)

Das folgende Skript fügt einige Dummy-Datensätze in Patient ein Tabelle:

INSERT INTO Patient
VALUES ('Jack', 'Male', '1960-12-15', '2017-06-30 16:30:35'),
('Sara', 'Female', '1962-01-20', '2015-02-22 10:35:55'),
('Elisa', 'Female', '1959-03-25', '2020-03-16 22:24:39'),
('Nik', 'Male', '1938-12-15', '2011-06-21 09:45:55'),
('Jos', 'Male', '1940-09-12', '2015-03-25 11:55:20')

Beachten Sie den Unterschied zwischen den in die DOB-Spalte und die DOD-Spalte eingefügten Werten. Die Spalte DOB hat Werte im Format YYYY-MM-DD, aber für die Spalte DOD übergeben Sie die Informationen HH:MM:SS (Stunden:Minuten:Sekunden).

Sehen wir uns nun an, wie unser Patient Tisch aussieht. Führen Sie das folgende SQL-Skript aus, um alle Datensätze aus der Patiententabelle auszuwählen:

SELECT * FROM Patient

So konvertieren Sie DateTime in das Datumsformat YYYY-MM-DD in SQL Server

Oft brauchen wir nur den Datumsteil von DateTime Säule. Da die Datumswerte in SQL Server standardmäßig im Format JJJJ-MM-TT gespeichert werden, wird durch Extrahieren des Datumsteils aus dem DateTime-Datentyp das Datum in diesem Format zurückgegeben .

Schauen wir uns ein Beispiel an. Das Verteidigungsministerium Spalte Patient Tabelle speichert Werte in DateTime Format. Sehen wir uns an, wie das Datum extrahiert wird Teil aus der Spalte:

SELECT CAST(DOD AS DATE) AS DOD_Date
FROM Patient

Wie Sie dem obigen Skript entnehmen können, um die DateTime-Typspalte in Date umzuwandeln , können Sie den CAST verwenden Funktion. Sie müssen den Spaltennamen gefolgt von AS übergeben Anweisung und das DATUM Typ zum CAST Funktion.

Hier ist das Ergebnis Ihres Skripts:Werte aus der Spalte DOD werden ausgewählt und in das Format YYYY-MM-DD konvertiert.

Lassen Sie uns sowohl das ursprüngliche DOD auswählen Spaltenwerte und umgewandelte DOD Werte, um den Unterschied zwischen ihnen zu demonstrieren:

SELECT DOD as DOD, CAST(DOD AS DATE) AS DOD_Date
FROM Patient

Wenn Sie schließlich alle Spalten in Ihrer Tabelle auswählen und nur eine einzelne Spalte umwandeln möchten (z. B. die DOD-Spalte in den Datumstyp konvertieren), können Sie das folgende Skript ausführen:

SELECT t.*, CAST(DOD AS DATE) AS DOD_Date
from Patient t

In der Ausgabe sehen Sie alle Tabellenspalten zusammen mit der Spalte DOD_Date, die den Datumsteil aus der Spalte DOD enthält.

Konvertieren von Zeichenfolgen in das SQL Server-Datumsformat JJJJ-MM-TT

Datumsangaben werden häufig in Zeichenfolgenformaten in den Tabellenspalten von SQL Server gespeichert. Sie können die Zeichenfolgewerte in das SQL Server-Datumsformat JJJJ-MM-TT konvertieren.

Lassen Sie uns eine weitere Spalte in unserem Patient erstellen Tisch. Der Name der Spalte ist Arriv_Date (Dummy-Spalte, die die Ankunftsdaten der Patienten anzeigt) und der Spaltentyp ist VARCHAR . Führen Sie das folgende Skript aus, um diese Spalte zu erstellen:

ALTER TABLE Patient
ADD Arriv_Date varchar(50);

Sie erhalten das neue Arriv_Date Spalte Patient hinzugefügt Säule. Im Moment das Arriv_Date Spalte enthält NULL Werte.

SELECT * FROM Patient

Fügen wir nun einige Datensätze zum Arriv_Date hinzu Säule. Das folgende Skript fügt Zeichenfolgen in verschiedenen Datumsformaten in diese Spalte ein.

UPDATE Patient SET Arriv_Date = '10-Nov-2012' WHERE Id = 6
UPDATE Patient SET Arriv_Date = 'March 31, 2015' WHERE ID = 7
UPDATE Patient SET Arriv_Date = '12/02/2020' WHERE ID = 8
UPDATE Patient SET Arriv_Date = '10 October 2020' WHERE ID = 9
UPDATE Patient SET Arriv_Date = '15/10/21' WHERE ID = 10

Sehen wir uns nun an, wie die Daten im Arriv_Date aussehen Spalte aussieht. Führen Sie das folgende Skript aus:

SELECT * FROM Patient

Zum Konvertieren aller Zeichenfolgen in Arriv_Date -Spalte in das SQL Server-Datumsformat JJJJ-MM-TT , können Sie wieder den CAST verwenden Funktion. Sie müssen den Spaltennamen gefolgt von AS angeben Anweisung und das DATUM Typ.

Das folgende Skript wählt das ursprüngliche Arriv_Date aus Spalte und die darin enthaltenen Werte, die in das Datumsformat konvertiert werden.

Select Arriv_Date, CAST(Arriv_Date as DATE) as ARRIVAL_DATE
FROM Patient

Die Ausgabe zeigt Werte in verschiedenen Datumsformaten. Die Zeichenfolgetypspalte Arriv_Date wird in JJJJ-MM-TT umgewandelt Format im ARRIVAL_DATE Spalte:

So konvertieren Sie das SQL Server-Datumsformat JJJJ-MM-TT in andere Formate

So wie Sie andere Formate in YYYY-MM-DD konvertieren können, können Sie auch das Gegenteil tun. Zum Umwandeln von JJJJ-MM-TT Datumsformat in Zeichenketten mit unterschiedlichen Datumsformaten, können Sie die CONVERT-Funktion verwenden.

Die CONVERT-Funktion akzeptiert drei Parameter:den Zieltyp, der im folgenden Skript VARCHAR(50) ist, die ursprüngliche Datumsspalte und den Code. Der Code definiert, wie das konvertierte Datum aussehen wird. Hier konvertiert der Codewert 105 das Datum in das Format TT-MM-JJJJ.

Führen Sie das Skript aus, um das Datum vom Format JJJJ-MM-TT in TT-MM-JJJJ zu konvertieren:

SELECT DOB, CONVERT(varchar(50), DOB ,105) as DOB_CONV
From Patient

Hier ist die Ausgabe:

Lassen Sie uns ein anderes Beispiel haben. Der Codewert 106 für das konvertierte Datum konvertiert das Datum vom Format JJJJ-MM-TT in das Format TT MON JJJJ. Beispielsweise wird in der ersten Spalte das Datum 1960-12-15 in den 12. Dezember 1960 umgewandelt.

SELECT DOB, CONVERT(varchar(50), DOB ,106) as DOB_CONV
From Patient

Ebenso konvertiert der Codewert 6 ein Datum in das Format TT MON JJ:

SELECT DOB, CONVERT(varchar(50), DOB ,6) as DOB_CONV
From Patient

Und schließlich konvertiert der Codewert 11 ein Datum in das Format JJJJ/MM/TT:

SELECT DOB, CONVERT(varchar(50), DOB ,111) as DOB_CONV
From Patient

Weitere Einzelheiten zu den verschiedenen Datumsformaten und den entsprechenden Codes finden Sie in der offiziellen SQL Server-Dokumentation.

Schlussfolgerung

Auf diese Weise haben wir sowohl das Wesen des SQL-Server-Datumsformats YYYY-MM-DD als auch die speziellen Fälle der Konvertierung der Daten in dieses Format und umgekehrt geklärt.

Wir haben gelernt, die CAST-Funktion zu verwenden, um verschiedene Datentypen, einschließlich DateTime und Zeichenfolgen, in das JJJJ-MM-TT-Format zu konvertieren, und die CONVERT-Funktion, um die JJJJ-MM-TT-Daten in andere Formate umzuwandeln.

Außerdem erleichtern die modernen Tools für SQL Server-Spezialisten die Bearbeitung der Daten erheblich. Zum Beispiel enthält das multifunktionale dbForge Studio für SQL Server neben den anderen Optionen einen praktischen visuellen Dateneditor, den Sie verwenden können, wenn Sie mit Daten in SQL Server arbeiten.

Ich hoffe, diese Informationen waren hilfreich für Sie. Bleiben Sie dran!