Grunnleggende datatyper i SQL
Hvordan lagres datoer i SQL -serveren?
Innenfor SQL-serveren lagres datoer med to 4-byte heltall. Det første heltallet tilsvarer antall dager før eller etterfølger grunndatoen 1. januar 1900. Det andre heltallet tilsvarer antall 1/300. sekund som gikk siden midnatt. For eksempel lagres datoen "1. januar 2000 12:00:00" som de to heltallene - 36.529 (antall dager mellom 1. januar 1900 og 1. januar 2000) og 43.200.000 (antall 1/300. av et sekund siden midnatt).
SQL-serveren gir også en rekke innebygde funksjoner for å jobbe med datoer, for eksempel DateAdd, Datediff og konvertere, som lar oss utføre de vanlige operasjonene som å legge til eller trekke fra tidsintervallene, sammenligne datoene og formatere den datoer.
For å utføre SQL -spørsmålene i en database, bruker vi vanligvis et verktøy som SQL Server Management Studio (SSMS).
Opprette en [dbo].[Bestillinger] Tabell
For å lage en tabell i databasen vår, må vi skrive følgende spørsmål:
Lag tabell [dbo].[BESTILLINGER] (
[ord_number] int ikke null
,[ord_datetime] DateTime NULL
,[ord_date] dato null
,[Deli_datetime] DateTime NULL
,[last_visit_date] dato null
)
Sett inn dataene i [DBO].[Bestillinger] Tabell
Sett inn verdiene i tabellen ved å bruke følgende kommando:
Sett inn [dbo].[Bestillinger] ([ord_number], [ord_datetime], [ord_date], [deli_datetime], [last_visit_date])
Verdier
('1', '2021-10-01 10:30:00', '2021-10-01', '2021-10-12 10:11:10', '2021-11-01'),
('2', '2021-10-01 12:45:00', '2021-10-01', '2021-10-10 14:10:11', '2021-10-15'),
('3', '2021-10-30 13:25:00', '2021-10-30', '2021-11-05 13:22:12', '2021-12-30'),
('4', '2021-09-22 16:30:00', '2021-09-22', '2021-09-25 14:12:13', '2021-12-22'),
('5', '2021-01-10 18:15:00', '2021-01-10', '2021-02-01 11:15:14', '2022-01-10'),
('6', Current_Timestamp, Convert (Dato, Current_Timestamp), DateAdd (Day, 5, Current_Timestamp), DateAdd (måned, 5, Current_Timestamp))
Konvertere en dato til streng
Hvis vi bringer tilbake datetimeverdiene fra tabellen, vil resultatene vise som “2021-10-01 10:30:00.000 ”. Men hvis vi liker å konvertere den til en streng i vårt eget format i SQL -koden, kan vi gjøre det ved å bruke følgende funksjon:
PLUKKE UT
[ord_datetime]
,Konverter (varchar (20), [ord_datetime], 22) 'order_date_string'
FRA
[dbo].[BESTILLINGER]
Produksjon:
ord_datetime order_date_string
2021-10-01 10:30:00.000 10/01/21 10:30:00
2021-10-01 12:45:00.000 10/01/21 12:45:00
2021-10-30 13:25:00.000 10/30/21 13:25:00
Finne en spesifikk dato ved hjelp av hvor leddet
For å finne ordrene der bestillingsdatoen er 1. desember 2021, må vi følge følgende spørsmål:
PLUKKE UT
[ord_number]
,[ord_date]
FRA
[dbo].[BESTILLINGER]
HVOR
[ord_date] = '01/10/2021 '
Produksjon:
ord_number ord_date
5 2021-01-10
5 2021-01-10
Skille datoen fra tiden
Vi kan også bruke konverteringsfunksjonen på en dato for å hente bare datoverdien ved å spesifisere en stil. For dette bruker vi følgende spørsmål:
Erklære @DD som DateTime
Sett @DD = '2011-07-03 20:30:40'
Velg Convert (Varchar, @DD, 103)
Produksjon:
(Ingen kolonneavn)
1 03/07/2011
Få gjeldende dato og tid
Her er et eksempel på en SQL -spørring som henter gjeldende dato og tid ved å bruke GetDate og Current_Timestamp -funksjonene:
PLUKKE UTProduksjon:
(Ingen kolonneavn) (ingen kolonneavn)Finne forskjellen mellom to datoer
Det er ofte nyttig å finne forskjellen mellom to datoer. Med dette kan vi gjøre ting som å finne antall dager mellom bestillingen og en leveringsdato.
Her er et eksempel:
PLUKKE UTProduksjon:
ord_date deli_datetime del_daysKonklusjon
Vi lærte å manipulere datoer, tider og strenger ved å bruke de innebygde funksjonene. Disse funksjonene er veldig nyttige for å utføre beregninger og transformasjoner på dataene som er lagret i SQL Server -tabellene. Ved å forstå og bruke disse datatypene og funksjonene effektivt, kan vi skrive mer effektive og kraftige SQL -spørsmål.