Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
Azure Synapse Analytics
Elemzési platformrendszer (PDW)
SQL Analytics-végpont a Microsoft Fabricben
Raktár a Microsoft Fabricben
SQL-adatbázis a Microsoft Fabricben
Olyan dátumot határoz meg, amely egy 24 órás időalapú napidővel van kombinálva. A datetime2 a meglévő dátum/idő típus kiterjesztéseként tekinthető, amely nagyobb dátumtartományt, nagyobb alapértelmezett tört pontosságot és opcionális felhasználó által megadott pontosságot biztosít.
Datetime2 leírása
| Property | Value |
|---|---|
| Syntax | datetime2 [ (tört másodperc pontosság) ] |
| Usage | DECLARE @MyDatetime2 datetime2(7);CREATE TABLE Table1 (Column1 datetime2(7)); |
| Alapértelmezett sztringkonstansformátum (alacsonyabb szintű ügyfélhez használatos) |
yyyy-MM-dd HH:mm:ss[.nnnnnnn]További információkért tekintse meg a jelen cikk későbbi, alacsonyabb szintű ügyfelek visszamenőleges kompatibilitását . |
| Dátumtartomány |
0001-01-01
9999-12-31
9999. január 1., 1 CE– 9999. december 31. |
| Időtartomány |
00:00:00
23:59:59.9999999
|
| Időzóna eltolási tartománya | None |
| Elemtartományok |
yyyy egy négy számjegyből álló 00019999szám, amely egy évet jelöl.MM egy kétjegyű szám, amely a 0112megadott év egy hónapjának felel meg.dd egy kétjegyű szám, amely a hónaptól függ 0131 , amely a megadott hónap egy napját jelöli.HH egy két számjegyből álló 0023szám, amely az órát jelöli.mm egy kétjegyű szám, amely a 0059perceket jelöli.ss egy két számjegyből álló 0059szám, amely a másodikat jelöli.n* a nullától a hét számjegyig tartó szám 09999999, amely a tört másodpercet jelöli. Az Informatica esetében a tört másodperc akkor csonkul, ha n kisebb , mint 3. |
| Karakterhossz | 19 pozíció minimum (yyyy-MM-dd HH:mm:ss) legfeljebb 27 (yyyy-MM-dd HH:mm:ss.0000000) |
| Precizitás, méretarány | 0–7 számjegy, 100 nanoszekundum (100 ns) pontossággal. Az alapértelmezett pontosság 7 számjegy. A Microsoft Fabric Data Warehouse-ban ez a pontosság 0 és 6 közötti egész szám lehet, alapértelmezett érték nélkül. A pontosságot meg kell adni a Microsoft Fabric Data Warehouse-ban. |
| Tárterület mérete 1 | 6 bájt a 3-nál kisebb pontosság érdekében. 7 bájt a 3 vagy 4 pontossághoz. Minden más pontossághoz 8 bájt szükséges. 2 |
| Accuracy | 100 nanoszekundum |
| Alapértelmezett érték | 1900-01-01 00:00:00 |
| Calendar | Gregorian |
| Felhasználó által definiált tört másodperc pontossága | Yes |
| Időzóna-eltolás tudatosítása és megőrzése | No |
| Nyári időszámítás | No |
1 A megadott értékek tömörítetlen soráruházhoz tartoznak. Az adattömörítés vagy az oszloptár használata megváltoztathatja az egyes pontosságok tárolási méretét. Emellett a lemezen és a memóriában lévő tárhely mérete is eltérhet. A datetime2 értékekhez például mindig 8 bájtnyi memória szükséges kötegelt mód használata esetén.
2 Ha egy datetime2 érték varbináris értékre van adva, a pontosság tárolásához további bájtot ad hozzá a varbináris értékhez.
Az adattípus metaadataiért lásd: sys.systypes vagy TYPEPROPERTY. A pontosság és a skálázás változó bizonyos dátum- és idő típusú adattípusokhoz. Az oszlopok pontosságának és méretezésének beszerzéséhez lásd a COLUMNPROPERTY, a COL_LENGTH vagy a sys.columns című témakört.
A datetime2 sztringkonstans-formátumai támogatottak
Az alábbi táblázatok a datetime2 támogatott ISO 8601- és ODBC-sztringkonstans-formátumát sorolják fel. A datetime2 dátum- és időrészeinek betűrendes, numerikus, nem formázott és időformátumával kapcsolatos információkért lásd: dátum és idő.
| ISO 8601 | Descriptions |
|---|---|
yyyy-MM-ddTHH:mm:ss[.nnnnnnn] |
Ezt a formátumot a munkamenet területi SET LANGUAGE beállításai nem befolyásoljákSET DATEFORMAT. A Tsztringkonstans :például a kettőspontot (.) és a pontot (2024-05-02T19:58:47.1234567) tartalmazza. |
| ODBC | Description |
|---|---|
{ ts 'yyyy-MM-dd HH:mm:ss[.nnnnnnn]' } |
ODBC API-specifikus: A tizedesvesszőtől jobbra lévő számjegyek száma, amely a tört másodpercet jelöli, 0-tól 7-ig (100 nanoszekundum) határozható meg. |
ANSI és ISO 8601 megfelelőség
A dátum és idő ANSI és ISO 8601 megfelelősége a datetime2 szabványra vonatkozik.
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_WSTRor DBTYPE_STR | Java.sql.String | Sztring vagy SqString |
| date | yyyy-MM-dd | SQL_WVARCHAR vagy SQL_VARCHAR | DBTYPE_WSTRor DBTYPE_STR | Java.sql.String | Sztring vagy SqString |
| datetime2 | yyyy-MM-dd HH:mm:ss[.nnnnnnnn] | SQL_WVARCHAR vagy SQL_VARCHAR | DBTYPE_WSTRor DBTYPE_STR | Java.sql.String | Sztring vagy SqString |
| datetimeoffset | yyyy-MM-dd HH:mm:ss[.nnnnnnn] [+|-]hh:mm | SQL_WVARCHAR vagy SQL_VARCHAR | DBTYPE_WSTRor DBTYPE_STR | Java.sql.String | Sztring vagy SqString |
Dátum- és időadatok konvertálása
A dátum- és idő típusú adattípusokká alakításkor az adatbázismotor elutasítja azokat az értékeket, amelyek nem ismerhetők fel dátumként vagy időpontként. A CAST és a CONVERT függvények dátum- és időadatokkal való használatával kapcsolatos információkért lásd: CAST és CONVERT
Más dátum- és időtípusok konvertálása datetime2 adattípusra
Ez a szakasz azt ismerteti, hogy mi történik, ha más dátum- és idő típusú adattípusokat konvertál a datetime2 adattípusra.
Ha az átalakítás dátumból történik, a program kimásolja az évet, a hónapot és a napot. Az időösszetevő értéke 00:00:00.0000000. Az alábbi kód egy date érték datetime2 értékké alakításának eredményeit mutatja be.
DECLARE @date AS DATE = '12-21-16';
DECLARE @datetime2 AS DATETIME2 = @date;
SELECT @datetime2 AS '@datetime2',
@date AS '@date';
Itt van az eredmények összessége.
@datetime2 @date
--------------------------- ----------
2016-12-21 00:00:00.0000000 2016-12-21
Ha az átalakítás időről(n) történik, az időösszetevő másolása és a dátumösszetevő beállítása 1900-01-01. Az alábbi példa egy idő(7) érték dátum/idő2 értékké alakításának eredményeit mutatja be.
DECLARE @time AS TIME (7) = '12:10:16.1234567';
DECLARE @datetime2 AS DATETIME2 = @time;
SELECT @datetime2 AS '@datetime2',
@time AS '@time';
Itt van az eredmények összessége.
@datetime2 @time
--------------------------- ----------------
1900-01-01 12:10:16.1234567 12:10:16.1234567
Ha az átalakítás smalldatetime-ből történik, a program az órákat és perceket másolja át. A másodperc és a tört másodperc értéke 0. Az alábbi kód egy smalldatetime érték datetime2 értékké alakításának eredményeit mutatja be.
DECLARE @smalldatetime AS SMALLDATETIME = '12-01-16 12:32';
DECLARE @datetime2 AS DATETIME2 = @smalldatetime;
SELECT @datetime2 AS '@datetime2',
@smalldatetime AS '@smalldatetime';
Itt van az eredmények összessége.
@datetime2 @smalldatetime
--------------------------- -----------------------
2016-12-01 12:32:00.0000000 2016-12-01 12:32:00
Ha az átalakítás datetimeoffset(n)-ből származik, a rendszer átmásolja a dátum- és időösszetevőket. Az időzóna csonkolt. Az alábbi példa egy datetimeoffset(7) érték datetime2 értékké alakításának eredményeit mutatja be.
DECLARE @datetimeoffset AS DATETIMEOFFSET (7) = '2016-10-23 12:45:37.1234567 +10:0';
DECLARE @datetime2 AS DATETIME2 = @datetimeoffset;
SELECT @datetime2 AS '@datetime2',
@datetimeoffset AS '@datetimeoffset';
Itt van az eredmények összessége.
@datetime2 @datetimeoffset
--------------------------- ----------------------------------
2016-10-23 12:45:37.1234567 2016-10-23 12:45:37.1234567 +10:00
Ha az átalakítás dátum/idő értékről történik, a program átmásolja a dátumot és az időt. A tört pontosság 7 számjegyre van kiterjesztve. Az alábbi példa egy datetime érték datetime2 értékké alakításának eredményeit mutatja be.
DECLARE @datetime AS DATETIME = '2016-10-23 12:45:37.333';
DECLARE @datetime2 AS DATETIME2 = @datetime;
SELECT @datetime2 AS '@datetime2',
@datetime AS '@datetime';
Itt van az eredmények összessége.
@datetime2 @datetime
----------------------- ---------------------------
2016-10-23 12:45:37.3333333 2016-10-23 12:45:37.333
Explicit módon a datetime2-be való bedobás a datetime használata esetén
A 130-as és újabb adatbáziskompatibilitási szinten a datetime-rőldatetime2 adattípusokra történő implicit átalakítások jobb pontosságot mutatnak a tört ezredmásodpercek számba adásával, ami az előző példában látható módon eltérő konvertált értékeket eredményez. Használjon explicit öntést a datetime2 adattípusra, ha vegyes összehasonlítási forgatókönyv létezik a datetime és a datetime2 adattípusok között. További információ: SQL Server és az Azure SQL Database fejlesztései egyes adattípusok és nem gyakori műveletekkezelésében.
Sztringkonstansok konvertálása datetime2 értékre
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 átalakítások vagy explicit átalakítások a dátum- és időtípusoktól a sztringkonstansokig az aktuális munkamenet alapértelmezett formátumában találhatók. Az alábbi táblázat a sztringkonstans datetime2 adattípusra való konvertálásának szabályait mutatja be.
| Bemeneti sztring literálja | datetime2(n) |
|---|---|
ODBC DATE |
Az ODBC-sztringkonstansok a datetime adattípusra vannak leképezve. A konstansokból ODBC DATETIMEdatetime2 típusú hozzárendelési műveletek implicit konverziót okoznak a dátum/idő és a konvertálási szabályok által meghatározott típus között. |
ODBC TIME |
Lásd az előző ODBC DATE szabályt. |
ODBC DATETIME |
Lásd az előző ODBC DATE szabályt. |
DATE csak |
A TIME rész alapértelmezés szerint a következő.00:00:00 |
TIME csak |
A DATE rész alapértelmezés szerint a következő.1900-01-01 |
TIMEZONE csak |
A rendszer alapértelmezett értékeket ad meg. |
DATE + TIME |
Triviális. |
DATE + TIMEZONE |
Tilos. |
TIME + TIMEZONE |
A DATE rész alapértelmezés szerint 1900-1-1.
TIMEZONE a rendszer figyelmen kívül hagyja a bemenetet. |
DATE + TIME + TIMEZONE |
A rendszer a helyit DATETIME használja. |
Examples
Az alábbi példa összehasonlítja egy sztring minden dátum és idő adattípushoz való beírásának eredményeit.
SELECT CAST ('2007-05-08 12:35:29. 1234567 +12:15' AS TIME (7)) AS 'time',
CAST ('2007-05-08 12:35:29. 1234567 +12:15' AS DATE) AS 'date',
CAST ('2007-05-08 12:35:29.123' AS SMALLDATETIME) AS 'smalldatetime',
CAST ('2007-05-08 12:35:29.123' AS DATETIME) AS 'datetime',
CAST ('2007-05-08 12:35:29. 1234567 +12:15' AS DATETIME2 (7)) AS 'datetime2',
CAST ('2007-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 | 2007-05-08 |
| smalldatetime | 2007-05-08 12:35:00 |
| datetime | 2007-05-08 12:35:29.123 |
| datetime2 | 2007-05-08 12:35:29.1234567 |
| datetimeoffset | 2007-05-08 12:35:29.1234567 +12:15 |