sql >> Databasteknik >  >> RDS >> Sqlserver

Konvertera DateTime till formatet ÅÅÅÅ-MM-DD i SQL Server

En SQL Server-databas kan lagra en mängd olika datatyper, såsom siffror, textsträngar, booleska värden, datum, etc. Lagring och hantering av sådan data har dock sina särdrag. Den aktuella artikeln kommer att fokusera på att lagra datum i en SQL Server-databastabell och konvertera olika typer av datum till SQL Server-formatet ÅÅÅÅ-MM-DD och vice versa.

Låt oss börja!

ÅÅÅÅ-MM-DD – Datumformatet i SQL Server

Dataformatet för SQL Server ÅÅÅÅ-MM-DD antyder att år är markerad med fyra siffror, t.ex. 2021. månaden anges nästa med två siffror från 1-12 – t.ex. juni skulle vara 06. Slutligen, dagen i månaden presenteras med två siffror, till exempel 20. Således är datumet 6 juni 2021 , kommer att lagras som 2021-06-21. Det är formatet ÅÅÅÅ-MM-DD för datum i SQL Server-databaser.

I SQL Server kan du använda datatypen Date eller DateTime för att lagra datum. Skillnaden mellan datatyperna Date och DateTime ligger i detaljnivån där båda datatyperna lagrar datuminformationen.

  • DatumTime datatypen lagrar datumet tillsammans med tiden information på timmar , minuter och sekunder .
  • Datumet datatypen låter dig bara lagra datumet information utan tidsinformation.

Följande exempel visar skillnaden mellan datatyperna Date och DateTime.

Först skapar vi en dummy MyDatabase databas och en tabell (Patient ) i den.

patienten Tabellen har 5 kolumner:Id, Namn, Kön, DOB (födelsedatum) och DOD (Dödsdatum). Typen av DOB-kolumnen är Date, medan DOD-kolumnen har DateTime-datatypen.

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
)

Följande skript infogar några dummy-poster i patienten tabell:

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')

Lägg märke till skillnaden mellan värdena som infogats i DOB-kolumnen och DOD-kolumnen. DOB-kolumnen har värden i formatet ÅÅÅÅ-MM-DD, men för DOD-kolumnen skickar du informationen TT:MM:SS (timmar:minuter:sekunder).

Låt oss nu se hur vår patient bordet ser ut. Kör följande SQL-skript för att välja alla poster från patienttabellen:

SELECT * FROM Patient

Hur man konverterar DateTime till Date Format ÅÅÅÅ-MM-DD i SQL Server

Ofta behöver vi bara datumdelen från DateTime kolumn. Eftersom datumvärdena lagras i SQL Server i formatet ÅÅÅÅ-MM-DD som standard, extraherar datumdelen från datatypen DateTime returnerar datumet i detta format .

Låt oss ta en titt på ett exempel. DOD kolumnen i Patient Tabell lagrar värden i DateTime formatera. Låt oss se hur du extraherar datumet del från kolumnen:

SELECT CAST(DOD AS DATE) AS DOD_Date
FROM Patient

Som du kan se från skriptet ovan, för att konvertera kolumnen DateTime-typ till Date , kan du använda CAST fungera. Du måste skicka kolumnnamnet följt av AS uttalande och DATE skriv till CAST funktion.

Här är resultatet av ditt skript:värden från DOD-kolumnen väljs och konverteras till formatet ÅÅÅÅ-MM-DD.

Låt oss välja både den ursprungliga DOD kolumnvärden och konverterade DOD värden för att visa skillnaden mellan dem:

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

Slutligen, om du vill välja alla kolumner i din tabell och bara casta en enda kolumn (t.ex. konvertera DOD-kolumnen till datumtyp), kan du köra följande skript:

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

I utgången kan du se alla tabellkolumner tillsammans med kolumnen DOD_Date som innehåller datumdelen från DOD-kolumnen.

Hur man konverterar sträng till SQL Server-datumformat ÅÅÅÅ-MM-DD

Datum lagras ofta i strängformat i SQL Server-tabellkolumnerna. Du kan konvertera strängvärdena till SQL Server-datumformatet ÅÅÅÅ-MM-DD.

Låt oss skapa ytterligare en kolumn i vår Patient tabell. Namnet på kolumnen är Arriv_Date (dummy kolumn som visar patienternas ankomstdatum), och kolumntypen är VARCHAR . Kör följande skript för att skapa denna kolumn:

ALTER TABLE Patient
ADD Arriv_Date varchar(50);

Du får det nya Arriv_Date kolumnen har lagts till i Patient kolumn. För tillfället är Arriv_Date kolumnen innehåller NULL värden.

SELECT * FROM Patient

Låt oss nu lägga till några poster i Arriv_Date kolumn. Följande skript infogar strängar i olika datumformat i den här kolumnen.

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

Låt oss nu se hur data i Arriv_Date kolumn ser ut. Kör skriptet nedan:

SELECT * FROM Patient

För att konvertera alla strängar i Arriv_Date kolumnen till SQL Server-datumformatet ÅÅÅÅ-MM-DD , kan du återigen använda CAST fungera. Du måste ange kolumnnamnet följt av AS uttalande och DATE typ.

Följande skript väljer den ursprungliga Arriv_Date kolumnen och värdena i den som konverteras till datumformat.

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

Utdata visar värden i olika datumformat. Strängtypskolumnen Arriv_Date konverteras till ÅÅÅÅ-MM-DD format i ARRIVAL_DATE kolumn:

Hur man konverterar SQL Server-datumformat ÅÅÅÅ-MM-DD till andra format

Precis som du kan konvertera andra format till ÅÅÅÅ-MM-DD, kan du göra det omvända. För att konvertera ÅÅÅÅ-MM-DD datumformat till strängar med olika datumformat, kan du använda funktionen KONVERTERA.

KONVERTERA-funktionen accepterar tre parametrar:måltypen som är VARCHAR(50) i följande skript, den ursprungliga datumkolumnen och koden. Koden definierar hur det konverterade datumet kommer att se ut. Här konverterar kodvärdet 105 datumet till formatet DD-MM-ÅÅÅÅ.

Kör skriptet för att konvertera datumet från formatet ÅÅÅÅ-MM-DD till DD-MM-ÅÅÅÅ:

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

Här är resultatet:

Låt oss ta ett annat exempel. Kodvärdet 106 för det konverterade datumet konverterar datumet från formatet ÅÅÅÅ-MM-DD till formatet DD MÅN ÅÅÅÅ. I den första kolumnen konverteras till exempel datumet 1960-12-15 till 12 december 1960.

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

På liknande sätt konverterar kodvärdet 6 ett datum till formatet DD MÅN ÅÅ:

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

Och slutligen konverterar kodvärdet 11 ett datum till formatet ÅÅÅÅ/MM/DD:

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

För att se ytterligare information om alla olika datumformat och motsvarande koder, se den officiella SQL Server-dokumentationen.

Slutsats

På så sätt har vi klargjort både kärnan i SQL-serverns datumformat ÅÅÅÅ-MM-DD och de specifika fallen av konvertering av datum till detta format och vice versa.

Vi lärde oss att använda CAST-funktionen för att konvertera olika datatyper inklusive DateTime och strängar till formatet ÅÅÅÅ-MM-DD och funktionen KONVERTERA för att konvertera datumen ÅÅÅÅ-MM-DD till andra format.

Dessutom gör de moderna verktygen för SQL Server-specialister arbetet med att redigera datumen mycket enklare. Till exempel innehåller den multifunktionella dbForge Studio för SQL Server, bland resten av alternativen, en praktisk Visual Data Editor som du kan använda när du arbetar med datum i SQL Server.

Hoppas denna information var användbar för dig. Håll utkik!


  1. Hur man ställer in MariaDB 10.3-replikering med Ansible och Vagrant

  2. Hur man väljer jämförelse av två kolumner som en kolumn i Oracle

  3. Beräkna procent från SUM() i samma SELECT sql-fråga

  4. Ta bort SCHEMABINDING från en användardefinierad funktion i SQL Server