Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analysplattformssystem (PDW)
SQL-analysslutpunkt i Microsoft Fabric
Lager i Microsoft Fabric
SQL-databas i Förhandsversion av Microsoft Fabric
Definierar ett datum i SQL Server. Datumdatatypen introducerades i SQL Server 2008 (10.0.x).
date description
| Property | Value |
|---|---|
| Syntax | DATE |
| Usage | DECLARE @MyDate DATECREATE TABLE Table1 (Column1 DATE) |
| Standardformat för strängliteral (används för klient på nednivå) |
yyyy-MM-ddMer information finns i avsnittet Bakåtkompatibilitet för klienter på nednivå . |
| Range |
0001-01-01 through 9999-12-31 (1582-10-15 via 9999-12-31 för Informatica)1 januari 1 CE (common era) till och med 31 december 9999 CE (15 oktober 1582 CE till och med 31 december 9999 CE för Informatica) |
| Element ranges |
yyyy är fyra siffror från 0001 till 9999 som representerar ett år. Informatica begränsar yyyy intervallet 1582 till 9999.MM är två siffror från 01 till 12 som representerar en månad under det angivna året.dd är två siffror från 01 till 31, beroende på månad, vilket representerar en dag i den angivna månaden. |
| Character length | 10 positions |
| Precision, scale | 10, 0 |
| Storage size | 3 byte, fast |
| Storage structure | ett 3-bytes heltalslagerdatum |
| Accuracy | One day |
| Default value | 1900-01-01Det här värdet används för den bifogade datumdelen för implicit konvertering från tid till datetime2 eller datetimeoffset. |
| Calendar | Gregorian |
| Användardefinierad bråkdels sekundprecision | No |
| Tidszonsförskjutningsmedveten och konservering | No |
| Sommartidsmedveten | No |
Strängliterala format som stöds för datum
I följande listor visas giltiga strängliterala format för datumdatatypen .
[m]m, dd, och [yy]yy representerar månad, dag och år i en sträng med snedstreck (/), bindestreck (-) eller punkter (.) som avgränsare.
Endast fyrsiffriga eller tvåsiffriga år stöds. Använd fyrsiffriga år när det är möjligt. Om du vill ange ett heltal från 0001 till 9999 som representerar brytåret för att tolka tvåsiffriga år som fyrsiffriga år använder du alternativet för serverkonfiguration med två siffror år cutoff .
För Informatica yyyy är begränsad till intervallet 1582 till 9999.
Ett tvåsiffrigt år som är mindre än eller lika med de två sista siffrorna i brytåret är i samma århundrade som brytåret. Ett tvåsiffrigt år som är större än de två sista siffrorna i brytåret är i det århundrade som kommer före brytåret. Om den tvåsiffriga årsgränsen till exempel är standard 2049tolkas det tvåsiffriga året 49 som 2049 och det tvåsiffriga året 50 tolkas som 1950.
Den aktuella språkinställningen avgör standardformatet för datum. Du kan ändra datumformatet med hjälp av SET LANGUAGE - och SET DATEFORMAT-uttrycken .
Formatet ydm stöds inte för datum.
Strängliterala format för månad-dag-år
SET DATEFORMAT mdy;
[m]m/dd/[yy]yy[m]m-dd-[yy]yy
Strängliterala format för månad-år-dag
SET DATEFORMAT myd;
[m]m/[yy]yy/dd[m]m-[yy]yy-dd[m]m.[yy]yy.dd
Strängliterala format för dag-månad-år
SET DATEFORMAT dmy;
dd/[m]m/[yy]yydd-[m]m-[yy]yydd.[m]m.[yy]yy
Strängliterala format för dag-år-månad
SET DATEFORMAT dym;
dd/[yy]yy/[m]mdd-[yy]yy-[m]mdd.[yy]yy.[m]m
Strängliterala format för årsmånadsdag
SET DATEFORMAT ymd;
[yy]yy/[m]m/dd[yy]yy-[m]m-dd[yy]yy-[m]m-dd
Alfabetisk lista över format
[dd] mon[,] yyyydd mon[,][yy]yydd [yy]yy mon[dd] yyyy monmon [dd][,] yyyymon dd[,] [yy]mon yyyy [dd]yyyy mon [dd]yyyy [dd] mon
mon representerar det fullständiga månadsnamnet, eller månadsförkortningen, som anges på det aktuella språket. Kommatecken är valfria och versaler ignoreras.
Använd fyrsiffriga år för att undvika tvetydighet.
Om dagen saknas anges den första dagen i månaden.
ISO 8601-lista över format
yyyy-MM-ddyyyyMMdd
Samma som SQL-standarden. Det här formatet är det enda format som definierats som en internationell standard.
Oparerad lista över format
[yy]yyMMddyyyy[MMdd]
Datumdata kan anges med fyra, sex eller åtta siffror. En sexsiffrig eller åttasiffrig sträng tolkas alltid som ymd. Månad och dag måste alltid vara två siffror. En fyrsiffrig sträng tolkas som året.
ODBC-datumformat
{ d 'yyyy-MM-dd' }
ODBC API specifikt.
W3C XML-datumformat
yyyy-MM-ddTZD
Stöds för XML/SOAP-användning.
TZD är tidszonsdesignatorn (Z eller +hh:mm-hh:mm):
hh:mmrepresenterar tidszonsförskjutningen.hhär två siffror, från0till14, som representerar antalet timmar i tidszonsförskjutningen.mmär två siffror, från0till59, som representerar antalet ytterligare minuter i tidszonsförskjutningen.+(plus) eller-(minus) är det obligatoriska tecknet på tidszonsförskjutningen. Det här tecknet anger att tidszonsförskjutningen läggs till eller subtraheras från UTC-tiden (Coordinated Universal Times) för att hämta den lokala tiden. Det giltiga intervallet för tidszonsförskjutning är från-14:00till+14:00.
ANSI- och ISO 8601-efterlevnad
datum överensstämmer med ANSI SQL-standarddefinitionen för den gregorianska kalendern:
Datetime-datatyper tillåter att datum i gregorianskt format lagras i datumintervallet 0001-01-01 CE till 9999-12-31 CE.
Standardformatet strängliteral, som används för klienter på nednivå, uppfyller sql-standardformuläret som definieras som yyyy-MM-dd. Det här formatet är samma som ISO 8601-definitionen för DATE.
Note
För Informatica är intervallet begränsat till 1582-10-15 (15 oktober 1582 CE) till 9999-12-31 (31 december 9999 CE).
Bakåtkompatibilitet för klienter på nednivå
Vissa klienter på nednivå stöder inte datatyperna tid, datum, datetime2 och datetimeoffset . I följande tabell visas typmappningen mellan en instans på hög nivå av SQL Server och klienter på nednivå.
| SQL Server-datatyp | Standardformat för strängliteral som skickas till klient på nednivå | Down-level ODBC | Down-level OLEDB | Down-level JDBC | Down-level SQLCLIENT |
|---|---|---|---|---|---|
| time | hh:mm:ss[.nnnnnnn] |
SQL_WVARCHAR eller SQL_VARCHAR |
DBTYPE_WSTR eller DBTYPE_STR |
Java.sql.String |
String eller SqString |
| date | yyyy-MM-dd |
SQL_WVARCHAR eller SQL_VARCHAR |
DBTYPE_WSTR eller DBTYPE_STR |
Java.sql.String |
String eller SqString |
| datetime2 | yyyy-MM-dd HH:mm:ss[.nnnnnnn] |
SQL_WVARCHAR eller SQL_VARCHAR |
DBTYPE_WSTR eller DBTYPE_STR |
Java.sql.String |
String eller SqString |
| datetimeoffset | yyyy-MM-dd HH:mm:ss[.nnnnnnn] [+ or -]hh:mm |
SQL_WVARCHAR eller SQL_VARCHAR |
DBTYPE_WSTR eller DBTYPE_STR |
Java.sql.String |
String eller SqString |
Konvertera datum- och tidsdata
När du konverterar till datum- och tidsdatatyper avvisar SQL Server alla värden som inte identifieras som datum eller tider. Information om hur du använder funktionerna CAST och CONVERT med datum- och tidsdata finns i CAST- och CONVERT-.
Konvertera datum till andra datum- och tidstyper
I det här avsnittet beskrivs vad som händer när du konverterar en datumdatatyp till andra datatyper för datum och tid.
När konverteringen är till time(n), misslyckas konverteringen och felmeddelandet 206 utlöses:
Konflikt av operandtyp: datumet är inte tidskompatibelt.
Om konverteringen är till datetime kopieras datumkomponenten. Följande kod visar resultatet av att konvertera ett datumvärde till ett datetime-värde .
DECLARE @date AS DATE = '12-10-25';
DECLARE @datetime AS DATETIME = @date;
SELECT @date AS '@date',
@datetime AS '@datetime';
Här är resultatet.
@date @datetime
---------- -----------------------
2025-12-10 2025-12-10 00:00:00.000
När konverteringen är till smalldatetime ligger datumvärdet i intervallet för en smalldatetime, datumkomponenten kopieras och tidskomponenten är inställd på 00:00:00.000. När datumvärdet ligger utanför intervallet för ett smalldatetime-värde utlöses felmeddelandet 242 och smalldatetime-värdet anges till NULL:
Konverteringen av en datumdatatyp till en smalldatetime-datatyper resulterade i ett out-of-range-värde.
Följande kod visar resultatet av att konvertera ett datumvärde till ett smalldatetime-värde .
DECLARE @date AS DATE = '1912-10-25';
DECLARE @smalldatetime AS SMALLDATETIME = @date;
SELECT @date AS '@date',
@smalldatetime AS '@smalldatetime';
Här är resultatet.
@date @smalldatetime
---------- -------------------
1912-10-25 1912-10-25 00:00:00
För konvertering till datetimeoffset(n)kopieras datumet och tiden är inställd på 00:00.0000000 +00:00. Följande kod visar resultatet av att konvertera ett datumvärde till ett datetimeoffset(3) -värde.
DECLARE @date AS DATE = '1912-10-25';
DECLARE @datetimeoffset AS DATETIMEOFFSET (3) = @date;
SELECT @date AS '@date',
@datetimeoffset AS '@datetimeoffset';
Här är resultatet.
@date @datetimeoffset
---------- ------------------------------
1912-10-25 1912-10-25 00:00:00.000 +00:00
När konverteringen är till datetime2(n) kopieras datumkomponenten och tidskomponenten är inställd på 00:00.000000. Följande kod visar resultatet av konverteringen av ett datumvärde till ett datetime2(3) -värde.
DECLARE @date AS DATE = '1912-10-25';
DECLARE @datetime2 AS DATETIME2 (3) = @date;
SELECT @date AS '@date',
@datetime2 AS '@datetime2(3)';
Här är resultatet.
@date @datetime2(3)
---------- -----------------------
1912-10-25 1912-10-25 00:00:00.000
Konvertera strängliteraler till datum
Konverteringar från strängliteraler till datum- och tidstyper tillåts om alla delar av strängarna är i giltiga format. Annars utlöses ett körningsfel. Implicita konverteringar eller explicita konverteringar som inte anger ett format, från datum- och tidstyper till strängliteraler, är i standardformatet för den aktuella sessionen. I följande tabell visas reglerna för att konvertera en strängliteral till datumdatatypen .
| Indatasträngliteral | date |
|---|---|
| ODBC DATE | ODBC-stränglitaraler mappas till datatypen datetime . Tilldelningsåtgärder från ODBC DATETIME-literaler till en datumtyp orsakar en implicit konvertering mellan datetime och den typ som konverteringsreglerna definierar. |
| ODBC TIME | Se föregående ODBC DATE-regel. |
| ODBC DATETIME | Se föregående ODBC DATE-regel. |
| DATE only | Trivial |
| TIME only | Standardvärden anges. |
| TIMEZONE only | Standardvärden anges. |
| DATUM + TID | Date-delen av indatasträngen används. |
| DATUM + TIDSZON | Not allowed. |
| TID + TIDSZON | Standardvärden anges. |
| DATUM + TID + TIDSZON | DATE-delen av lokal DATETIME används. |
Examples
I följande exempel jämförs resultatet av gjutning av en sträng med varje datum- och tidsdatatyp.
SELECT CAST ('2022-05-08 12:35:29.1234567 +12:15' AS TIME (7)) AS 'time',
CAST ('2022-05-08 12:35:29.1234567 +12:15' AS DATE) AS 'date',
CAST ('2022-05-08 12:35:29.123' AS SMALLDATETIME) AS 'smalldatetime',
CAST ('2022-05-08 12:35:29.123' AS DATETIME) AS 'datetime',
CAST ('2022-05-08 12:35:29.1234567 +12:15' AS DATETIME2 (7)) AS 'datetime2',
CAST ('2022-05-08 12:35:29.1234567 +12:15' AS DATETIMEOFFSET (7)) AS 'datetimeoffset';
Här är resultatet.
| Data type | Output |
|---|---|
| time | 12:35:29.1234567 |
| date | 2022-05-08 |
| smalldatetime | 2022-05-08 12:35:00 |
| datetime | 2022-05-08 12:35:29.123 |
| datetime2 | 2022-05-08 12:35:29.1234567 |
| datetimeoffset | 2022-05-08 12:35:29.1234567 +12:15 |