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


datetime2 (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

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