Megosztás a következőn keresztül:


dátum (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példányAzure Synapse AnalyticsElemzési platformrendszer (PDW)SQL Analytics-végpont a Microsoft FabricbenRaktár a Microsoft FabricbenSQL-adatbázis a Microsoft Fabricben

Dátumot határoz meg az SQL Serverben. Az SQL Server 2008 -ban (10.0.x) bevezették az adattípust .

Dátumleírás

Property Value
Syntax DATE
Usage DECLARE @MyDate DATE

CREATE TABLE Table1 (Column1 DATE)
Alapértelmezett sztringkonstansformátum

(alacsonyabb szintű ügyfélhez használatos)
yyyy-MM-dd

További információkért tekintse meg a visszafelé kompatibilitás a alacsonyabb szintű ügyfelek esetében című szakaszt.
Range 0001-01-01 keresztül 9999-12-31 (1582-10-15 az 9999-12-31 Informatica számára)

Január 1, 1 CE (Common Era) december 31, 9999 CE (október 15, 1582 CE december 31, 9999 CE for Informatica)
Elemtartományok yyyy négy számjegyből áll 00019999 , amelyek egy évet jelölnek. Az informatica a tartományt a következő értékre yyyy1582korlátozza9999: .

MM a megadott év egy hónapjának két számjegye 0112 .

dd a hónaptól függően két számjegy 0131, amely a megadott hónap egy napját jelöli.
Karakterhossz 10 pozíció
Precizitás, méretarány 10, 0
Tárterület mérete 3 bájt, javítva
Tárolási struktúra egy 3 bájtos egész szám üzletek dátuma
Accuracy Egy napon
Alapértelmezett érték 1900-01-01

Ez az érték a hozzáfűzött dátumrészhez használatos az időrőldatetime2 vagy datetimeoffset közötti implicit átalakításra.
Calendar Gregorian
Felhasználó által definiált tört másodperc pontossága No
Időzóna-eltolás tudatosítása és megőrzése No
Nyári időszámítás No

A dátumhoz támogatott sztringkonstansformátumok

Az alábbi listák a dátum adattípus érvényes sztringkonstansformátumát jelenítik meg.

[m]m, ddés [yy]yy egy sztringben a hónap, a nap és az év értékét jelöli, elválasztóként pedig perjelekkel (/), kötőjelekkel (-) vagy pontokkal (.).

Csak négyjegyű vagy kétjegyű év támogatott. Ha lehetséges, használjon négyjegyű éveket. Ha egy egész számot 00019999 szeretne megadni, amely a kétjegyű év négyjegyű évként való értelmezéséhez a kivágás évét jelöli, használja a kétjegyű év kivágás kiszolgálójának konfigurációs beállítását.

Az Informatica yyyy esetében a tartomány 1582 a következőre korlátozódik 9999: .

A kétjegyű év, amely kisebb vagy egyenlő a kivágás évének utolsó két számjegyével, ugyanabban az évszázadban van, mint a leépítési év. A leépítési év utolsó két számjegyénél nagyobb kétjegyű év a leépítési év előtti évszázadban van. Ha például a kétjegyű év leépítése az alapértelmezett 2049érték, a kétjegyű évet a rendszer a következőképpen értelmezi49, a kétjegyű évet 204950 pedig a rendszer a következőképpen értelmezi1950.

Az aktuális nyelvi beállítás határozza meg az alapértelmezett dátumformátumot. A dátumformátumot a SET LANGUAGE és a SET DATEFORMAT utasításokkal módosíthatja .

A ydm formátum nem támogatott a dátumhoz.

Sztringkonstans-formátumok hónap-nap évre

SET DATEFORMAT mdy;
  • [m]m/dd/[yy]yy
  • [m]m-dd-[yy]yy

Sztringkonstans-formátumok hónap-év naphoz

SET DATEFORMAT myd;
  • [m]m/[yy]yy/dd
  • [m]m-[yy]yy-dd
  • [m]m.[yy]yy.dd

Sztringkonstansformátumok egynapos hónapra

SET DATEFORMAT dmy;
  • dd/[m]m/[yy]yy
  • dd-[m]m-[yy]yy
  • dd.[m]m.[yy]yy

Sztringkonstans-formátumok az év minden napján

SET DATEFORMAT dym;
  • dd/[yy]yy/[m]m
  • dd-[yy]yy-[m]m
  • dd.[yy]yy.[m]m

Sztringkonstans-formátumok az év-hónap naphoz

SET DATEFORMAT ymd;
  • [yy]yy/[m]m/dd
  • [yy]yy-[m]m-dd
  • [yy]yy-[m]m-dd

Formátumok betűrendes listája

  • [dd] mon[,] yyyy
  • dd mon[,][yy]yy
  • dd [yy]yy mon
  • [dd] yyyy mon
  • mon [dd][,] yyyy
  • mon dd[,] [yy]
  • mon yyyy [dd]
  • yyyy mon [dd]
  • yyyy [dd] mon

mon az aktuális nyelven megadott teljes hónapnevet vagy a hónap rövidítését jelöli. A vesszők megadása nem kötelező, a nagybetűket pedig figyelmen kívül hagyja a rendszer.

A kétértelműség elkerülése érdekében használjon négyjegyű éveket.

Ha a nap hiányzik, a hónap első napja lesz megadva.

ISO 8601 formátumok listája

  • yyyy-MM-dd
  • yyyyMMdd

Ugyanaz, mint az SQL-szabvány. Ez a formátum az egyetlen nemzetközi szabványként definiált formátum.

Formátumok nem formázott listája

  • [yy]yyMMdd
  • yyyy[MMdd]

A dátumadatok négy, hat vagy nyolc számjegyből adhatók meg. A hatjegyű vagy nyolcjegyű sztringeket a rendszer mindig a következőképpen ymdértelmezi. A hónapnak és a napnak mindig két számjegyből kell lennie. A rendszer egy négyjegyű sztringet évként értelmez.

ODBC dátumformátum

  • { d 'yyyy-MM-dd' }

ODBC API-specifikus.

W3C XML-dátumformátum

  • yyyy-MM-ddTZD

XML-/SOAP-használat esetén támogatott.

TZD az időzóna-tervező (Z vagy +hh:mm-hh:mm):

  • hh:mm az időzóna eltolását jelöli. hh két számjegy, amelyek az 014időzóna-eltolásban lévő órák számát jelölik.

  • mm két számjegy, amelyek az 059időzóna eltolásában lévő további percek számát jelölik.

  • + (plusz) vagy - (mínusz) az időzóna eltolásának kötelező jele. Ez a jel azt jelzi, hogy a helyi idő lekéréséhez az időzóna eltolása hozzáadódik vagy kivonódik az egyezményes világidő (UTC) időből. Az időzóna-eltolás érvényes tartománya a következő: -14:00+14:00.

ANSI és ISO 8601 megfelelőség

a dátum megfelel a Gergely-naptár ANSI SQL standard definíciójának:

A dátum/idő adattípusok lehetővé teszik a Gergely-formátumú dátumok tárolását a 0001-01-01 CE-9999-12-31 CE dátumtartományban.

A lefelé irányuló ügyfelekhez használt alapértelmezett sztringkonstansformátum megfelel a definiált SQL standard űrlapnak yyyy-MM-dd. Ez a formátum megegyezik a ISO 8601 definíciójának formátumával DATE.

Note

Az Informatica esetében a tartomány (1582. október 15. CE) és 1582-10-15 (9999. december 31. CE) között van korlátozva 9999-12-31 .

Visszamenőleges kompatibilitás alacsonyabb szintű ügyfelek esetén

Egyes alacsonyabb szintű ügyfelek nem támogatják az idő, a dátum, a datetime2 és a datetimeoffset adattípust . Az alábbi táblázat az SQL Server egy magasabb szintű példánya és a alacsonyabb szintű ügyfelek közötti típusleképezést mutatja be.

SQL Server-adattípus Az alapértelmezett sztringkonstansformátum átadva a leszintű ügyfélnek Alacsonyabb szintű ODBC Alacsonyabb szintű OLEDB Alacsonyabb szintű JDBC Alacsonyabb szintű SQLCLIENT
time hh:mm:ss[.nnnnnnn] SQL_WVARCHAR vagy SQL_VARCHAR DBTYPE_WSTR vagy DBTYPE_STR Java.sql.String String vagy SqString
date yyyy-MM-dd SQL_WVARCHAR vagy SQL_VARCHAR DBTYPE_WSTR vagy DBTYPE_STR Java.sql.String String vagy SqString
datetime2 yyyy-MM-dd HH:mm:ss[.nnnnnnn] SQL_WVARCHAR vagy SQL_VARCHAR DBTYPE_WSTR vagy DBTYPE_STR Java.sql.String String vagy SqString
datetimeoffset yyyy-MM-dd HH:mm:ss[.nnnnnnn] [+ or -]hh:mm SQL_WVARCHAR vagy SQL_VARCHAR DBTYPE_WSTR vagy DBTYPE_STR Java.sql.String String vagy SqString

Dátum- és időadatok konvertálása

A dátum- és idő típusú adattípusokká alakításkor az SQL Server elutasítja az összes olyan értéket, amelyet nem ismer fel dátumként vagy időpontként. A CAST és CONVERT függvények dátum- és időadatokkal való használatáról a CAST és CONVERTcímű témakörben olvashat.

Dátum átalakítása más dátum- és időtípusokra

Ez a szakasz azt ismerteti, hogy mi történik, ha egy dátumadattípust más dátum- és időadattípusokká konvertál.

Ha az átalakítás idő(n), az átalakítás meghiúsul, és a 206-os hibaüzenet jelenik meg:

Operandus típusú perjel: a dátum nem kompatibilis az idővel.

Ha az átalakítás dátum/idő értékre történik, a program átmásolja a dátumösszetevőt. Az alábbi kód egy dátumérték dátum/idő értékké alakításának eredményeit mutatja be.

DECLARE @date AS DATE = '12-10-25';

DECLARE @datetime AS DATETIME = @date;

SELECT @date AS '@date',
       @datetime AS '@datetime';

Itt van az eredmények összessége.

@date      @datetime
---------- -----------------------
2025-12-10 2025-12-10 00:00:00.000

Ha az átalakítás kisdátumidőre történik, a dátumérték egy kisdátumtartományban van, a dátumösszetevőt átmásolja, az időösszetevő pedig a következőre 00:00:00.000van állítva. Ha a dátumérték kívül esik egy kisdátumérték tartományán, a rendszer a 242-s hibaüzenetet adja meg, a smalldatetime értéke pedig a következőre NULLvan állítva:

A dátum adattípus kisdátum-adattípusra való konvertálása tartományon kívüli értéket eredményezett.

Az alábbi kód egy dátumértékkisdátum-értékké alakításának eredményeit mutatja be.

DECLARE @date AS DATE = '1912-10-25';

DECLARE @smalldatetime AS SMALLDATETIME = @date;

SELECT @date AS '@date',
       @smalldatetime AS '@smalldatetime';

Itt van az eredmények összessége.

@date      @smalldatetime
---------- -------------------
1912-10-25 1912-10-25 00:00:00

A datetimeoffset(n)-ra való konvertáláshoz a program kimásolja a dátumot, és az idő a következőre 00:00.0000000 +00:00van állítva. Az alábbi kód egy dátumértékdatetimeoffset(3) értékké alakításának eredményeit mutatja be.

DECLARE @date AS DATE = '1912-10-25';

DECLARE @datetimeoffset AS DATETIMEOFFSET (3) = @date;

SELECT @date AS '@date',
       @datetimeoffset AS '@datetimeoffset';

Itt van az eredmények összessége.

@date      @datetimeoffset
---------- ------------------------------
1912-10-25 1912-10-25 00:00:00.000 +00:00

Ha az átalakítás datetime2(n) értékre történik, a program a dátumösszetevőt másolja át, és az időösszetevőt a következőre 00:00.000000állítja. Az alábbi kód egy dátumérték dátum/idő2(3) értékké alakításának eredményeit mutatja be.

DECLARE @date AS DATE = '1912-10-25';

DECLARE @datetime2 AS DATETIME2 (3) = @date;

SELECT @date AS '@date',
       @datetime2 AS '@datetime2(3)';

Itt van az eredmények összessége.

@date      @datetime2(3)
---------- -----------------------
1912-10-25 1912-10-25 00:00:00.000

Sztringkonstansok konvertálása dátumra

A sztringkonstansokból a dátum- és időtípusokba való konvertálás akkor engedélyezett, ha a sztringek minden része érvényes formátumban van. Ellenkező esetben futásidejű hiba jelentkezik. A stílust nem meghatározó implicit konverziók vagy explicit konverziók a dátum- és időtípusoktól a sztringkonstansokig az aktuális munkamenet alapértelmezett formátumában vannak. Az alábbi táblázat a sztringkonstans dátum adattípussá alakításának szabályait mutatja be.

Bemeneti sztring literálja date
ODBC DÁTUMA Az ODBC-sztringkonstansok a datetime adattípusra vannak leképezve. Az ODBC DATETIME-literálokból egy dátumtípusba történő hozzárendelési művelet implicit konverziót okoz a dátum és a konverziós szabályok által definiált típus között.
ODBC IDŐ Lásd az előző ODBC DATE szabályt.
ODBC DÁTUMIDŐPONTJA Lásd az előző ODBC DATE szabályt.
Csak DÁTUM Trivial
Csak IDŐ A rendszer alapértelmezett értékeket ad meg.
Csak IDŐZÓNA A rendszer alapértelmezett értékeket ad meg.
DÁTUM + IDŐ A bemeneti sztring DATE részét használja a rendszer.
DÁTUM + IDŐZÓN Tilos.
IDŐ + IDŐZÓNA A rendszer alapértelmezett értékeket ad meg.
DÁTUM + IDŐ + IDŐZÓNA A rendszer a helyi DATETIME DÁTUM részét használja.

Examples

Az alábbi példa összehasonlítja a sztringek minden dátum- és idő típusú adattípushoz való beírásának eredményeit.

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

Itt van az eredmények összessége.

Adattípus 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