En SQL Server-database kan gemme en række forskellige datatyper, såsom tal, tekststrenge, boolske værdier, datoer osv. Lagring og håndtering af sådanne data har dog deres egenskaber. Den aktuelle artikel vil fokusere på at gemme datoer i en SQL Server-databasetabel og konvertere forskellige typer datoer til SQL Server-formatet ÅÅÅÅ-MM-DD og omvendt.
Lad os starte!
ÅÅÅÅ-MM-DD – datoformatet i SQL Server
SQL Server ÅÅÅÅ-MM-DD dataformatet antyder, at året er markeret med fire cifre, f.eks. 2021. måneden er angivet næste gang med 2 cifre fra 1-12 – f.eks. vil juni være 06. Endelig dagen i måneden præsenteres med 2 cifre, såsom 20. Således er datoen 06. juni 2021 , vil blive gemt som 2021-06-21. Det er ÅÅÅÅ-MM-DD-formatet for datoer i SQL Server-databaser.
I SQL Server kan du bruge datatypen Dato eller DateTime til at gemme datoer. Forskellen mellem datatyperne Dato og Datoklokkeslæt ligger i det detaljeringsniveau, hvori begge datatyper gemmer datooplysningerne.
- DateTime datatypen gemmer datoen sammen med tiden oplysninger om timer , minutter og sekunder .
- Datoen datatypen giver dig kun mulighed for at gemme datoen information uden tidsoplysninger.
Følgende eksempel viser forskellen mellem datatyperne Dato og DateTime.
Først opretter vi en dummy Min Database database og én tabel (Patient ) i den.
Patienten tabellen har 5 kolonner:Id, Navn, Køn, DOB (Fødselsdato) og DOD (Dødsdato). DOB-kolonnens type er Dato, hvorimod DOD-kolonnen 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ølgende script indsætter nogle dummy-poster i patienten tabel:
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')
Bemærk forskellen mellem de værdier, der er indsat i DOB-kolonnen og DOD-kolonnen. DOB-kolonnen har værdier i formatet ÅÅÅÅ-MM-DD, men for DOD-kolonnen sender du oplysningerne TT:MM:SS (timer:minutter:sekunder).
Lad os nu se, hvordan vores patient bordet ser ud. Udfør følgende SQL-script for at vælge alle poster fra patienttabellen:
SELECT * FROM Patient
Sådan konverteres DateTime til Datoformat ÅÅÅÅ-MM-DD i SQL Server
Ofte har vi kun brug for datodelen fra DateTime kolonne. Da datoværdierne som standard er gemt i SQL Server i formatet ÅÅÅÅ-MM-DD, udtrækker datodelen fra datatypen DateTime datoen i dette format .
Lad os se på et eksempel. DOD kolonnen i Patient tabel gemmer værdier i DateTime format. Lad os se, hvordan du udtrækker datoen del fra kolonnen:
SELECT CAST(DOD AS DATE) AS DOD_Date
FROM Patient
Som du kan se fra scriptet ovenfor, for at konvertere DateTime-typekolonnen til Dato , kan du bruge CAST fungere. Du skal videregive kolonnenavnet efterfulgt af AS erklæring og DATE skriv til CAST funktion.
Her er resultatet af dit script:værdier fra DOD-kolonnen vælges og konverteres til formatet ÅÅÅÅ-MM-DD.
Lad os vælge både den originale DOD kolonneværdier og konverterede DOD værdier for at vise forskellen mellem dem:
SELECT DOD as DOD, CAST(DOD AS DATE) AS DOD_Date
FROM Patient
Endelig, hvis du ønsker at vælge alle kolonner i din tabel og kun caste en enkelt kolonne (f.eks. konverter DOD-kolonnen til datotype), kan du køre følgende script:
SELECT t.*, CAST(DOD AS DATE) AS DOD_Date
from Patient t
I outputtet kan du se alle tabelkolonner sammen med DOD_Date-kolonnen, der indeholder Dato-delen fra DOD-kolonnen.
Sådan konverteres streng til SQL Server-datoformat ÅÅÅÅ-MM-DD
Datoer gemmes ofte i strengformater i SQL Server-tabelkolonnerne. Du kan konvertere strengværdierne til SQL Server-datoformatet ÅÅÅÅ-MM-DD.
Lad os oprette endnu en kolonne i vores Patient bord. Navnet på kolonnen er Arriv_Date (dummy-kolonne, der viser patienternes ankomstdatoer), og kolonnetypen er VARCHAR . Udfør følgende script for at oprette denne kolonne:
ALTER TABLE Patient
ADD Arriv_Date varchar(50);
Du modtager den nye Arriv_Date kolonne føjet til Patient kolonne. I øjeblikket er Arriv_Date kolonne indeholder NULL værdier.
SELECT * FROM Patient
Lad os nu tilføje nogle poster i Arriv_Date kolonne. Følgende script indsætter strenge i forskellige datoformater i denne kolonne.
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
Lad os nu se, hvordan dataene i Arriv_Date kolonne ser ud. Udfør scriptet nedenfor:
SELECT * FROM Patient
At konvertere alle strenge i Arriv_Date kolonne til SQL Server-datoformatet ÅÅÅÅ-MM-DD , kan du igen bruge CAST fungere. Du skal angive kolonnenavnet efterfulgt af AS erklæring og DATE type.
Følgende script vælger den originale Arriv_Date kolonne og værdierne i den, der konverteres til datoformat.
Select Arriv_Date, CAST(Arriv_Date as DATE) as ARRIVAL_DATE
FROM Patient
Outputtet viser værdier i forskellige datoformater. Strengtypekolonnen Ankomstdato bliver konverteret til ÅÅÅÅ-MM-DD format i ARRIVAL_DATE kolonne:
Sådan konverteres SQL Server-datoformat ÅÅÅÅ-MM-DD til andre formater
Ligesom du kan konvertere andre formater til ÅÅÅÅ-MM-DD, kan du gøre det omvendte. For at konvertere ÅÅÅÅ-MM-DD datoformat til strenge med forskellige datoformater, kan du bruge KONVERTER-funktionen.
KONVERTER-funktionen accepterer tre parametre:måltypen, som er VARCHAR(50) i følgende script, den oprindelige datokolonne og koden. Koden definerer, hvordan den konverterede dato vil se ud. Her konverterer kodeværdien 105 datoen til DD-MM-ÅÅÅÅ-format.
Kør scriptet for at konvertere datoen fra formatet ÅÅÅÅ-MM-DD til DD-MM-ÅÅÅÅ:
SELECT DOB, CONVERT(varchar(50), DOB ,105) as DOB_CONV
From Patient
Her er outputtet:
Lad os få et andet eksempel. Kodeværdien på 106 for den konverterede dato konverterer datoen fra formatet ÅÅÅÅ-MM-DD til formatet DD MAN ÅÅÅÅ. For eksempel er datoen 1960-12-15 i første kolonne konverteret til 12. december 1960.
SELECT DOB, CONVERT(varchar(50), DOB ,106) as DOB_CONV
From Patient
På samme måde konverterer kodeværdien 6 en dato til formatet DD MON ÅÅ:
SELECT DOB, CONVERT(varchar(50), DOB ,6) as DOB_CONV
From Patient
Og endelig konverterer kodeværdien 11 en dato til formatet ÅÅÅÅ/MM/DD:
SELECT DOB, CONVERT(varchar(50), DOB ,111) as DOB_CONV
From Patient
For at se yderligere detaljer om alle de forskellige datoformater og tilsvarende koder, se den officielle SQL Server-dokumentation.
Konklusion
På denne måde har vi klarlagt både essensen af SQL-serverens datoformat ÅÅÅÅ-MM-DD og de specifikke tilfælde af konvertering af datoerne til dette format og omvendt.
Vi lærte at bruge CAST-funktionen til at konvertere forskellige datatyper, inklusive DateTime og strenge til formatet ÅÅÅÅ-MM-DD og KONVERTER-funktionen til at ændre ÅÅÅÅ-MM-DD-datoerne til andre formater.
Desuden gør de moderne værktøjer til SQL Server-specialister arbejdet med at redigere datoerne meget enklere. For eksempel inkluderer det multifunktionelle dbForge Studio til SQL Server blandt de øvrige muligheder en praktisk Visual Data Editor, som du kan bruge, når du arbejder med datoer i SQL Server.
Håber denne information var nyttig for dig. Bliv hængende!