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.
Vonatkozik a következőkre:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analitikai Platform System (PDW)
SQL adatbázis a Microsoft Fabric-ben
Olyan dátumot határoz meg, amely egy napidővel és egy 24 órás időalapú tört másodpercekkel van kombinálva.
Ne használjon datetime új munkához. Ehelyett használja a idő, dátum, datetime2és datetimeoffset adattípust. Ezek a típusok igazodnak az SQL Standardhoz, és hordozhatóbbak. idő, datetime2 és datetimeoffset több másodperces pontosságot biztosítanak. datetimeoffset időzóna-támogatást biztosít a globálisan üzembe helyezett alkalmazásokhoz.
Description
| Property | Value |
|---|---|
| Syntax | DATETIME |
| Usage | DECLARE @MyDatetime DATETIME;CREATE TABLE Table1 (Column1 DATETIME); |
| Alapértelmezett sztringkonstansformátumok (alacsonyabb szintű ügyfélhez) | Nem alkalmazható |
| Dátumtartomány | 1753-01-01 (1753. január 1.) – 9999-12-31 (9999. december 31.) |
| Időtartomány | 00:00:00–23:59:59.997 |
| időzóna eltolási tartománya | None |
| Elemtartományok |
yyyy a 1753 és a 9999 közötti négy számjegy, amelyek egy évet jelölnek.MM két számjegyből áll, a 01 és a 12között, amelyek egy hónapot jelölnek a megadott évben.dd két számjegyből áll, a hónaptól függően 01 és 31 között, amelyek a megadott hónap egy napját jelölik.HH két számjegy, a 00 és a 23között, amelyek az órát jelölik.mm két számjegy, a 00 és a 59között, amelyek a percet jelölik.ss két számjegyből áll, a 00 és a 59között, amelyek a másodikat jelölik.n* nullától három számjegyig terjed, 0 és 999között, amelyek a tört másodpercet jelölik. |
| Karakter hossza | 19 pozíció minimum 23 maximumig |
| Tárterület mérete | 8 bájt |
| Accuracy |
.000, .003vagy .007 másodpercre kerekítve |
| Alapértelmezett érték | 1900-01-01 00:00:00 |
| Calendar | Gergely (az évek teljes tartományát tartalmazza) |
| felhasználó által megadott tört másodperc pontosságú | No |
| időzóna-eltolásérzékenység és -megőrzés | No |
| Nyári időszámítási | No |
A datetime sztringkonstans-formátumai támogatottak
Az alábbi táblázatok felsorolják az datetimetámogatott sztringkonstansformátumokat. Az ODBC kivételével datetime sztringkonstansok egyetlen idézőjelben ('), például 'string_literaL'. Ha a környezet nem us_english, a sztringkonstansoknak Unicode formátumban kell lenniük N'string_literaL'.
Numerikus formátum
Megadhatja a dátumadatokat egy numerikus hónap megadásával. Például 5/20/97 1997. május huszadik napját jelöli. Numerikus dátumformátum használatakor adja meg a hónapot, a napot és az évet egy olyan sztringben, amely perjeleket (/), kötőjeleket (-) vagy pontokat (.) használ elválasztóként. Ennek a sztringnek a következő formában kell megjelennie:
<number separator number separator number [time] [time]>
Ha a nyelv us_englishvan beállítva, a dátum alapértelmezett sorrendje mdy (hónap, nap, év). A dátumsorrendet a SET DATEFORMAT utasítással módosíthatja.
A SET DATEFORMAT beállítása határozza meg a dátumértékek értelmezését. Ha a sorrend nem egyezik a beállítással, a rendszer nem dátumként értelmezi az értékeket. Előfordulhat, hogy a rendelésen kívüli dátumok helytelenül értelmezik a tartományon kívüli vagy helytelen értékeket. A 12/10/08 például a DATEFORMAT beállítástól függően hat dátum egyikeként értelmezhető. A négyrészes év az év.
| Dátumformátum | Order |
|---|---|
[0]4/15/[19]96 |
mdy |
[0]4-15-[19]96 |
mdy |
[0]4.15.[19]96 |
mdy |
[0]4/[19]96/15 |
myd |
15/[0]4/[19]96 |
dmy |
15/[19]96/[0]4 |
dym |
[19]96/15/[0]4 |
ydm |
[19]96/[0]4/15 |
ymd |
| Időformátum |
|---|
14:30 |
14:30[:20:997] |
14:30[:20.9] |
4am |
4 PM |
Ábécé sorrend
A dátumadatokat a hónap teljes neveként megadva is megadhatja. Például az aktuális nyelven megadott Aprilvagy Aprhónap rövidítése. A vesszők megadása nem kötelező, a nagybetűket pedig figyelmen kívül hagyja a rendszer.
Az alábbiakban néhány útmutatást talál a betűrendes dátumformátumok használatához:
A dátum- és időadatokat egyetlen idézőjelbe (
') csatolja. Az angoltól eltérő nyelvek esetén használja aN''.A szögletes zárójelek közé zárt karakterek megadása nem kötelező.
Ha csak az év utolsó két számjegyét adja meg, akkor a két számjegyből álló évszám utolsó két számjegyénél kisebb értékek konfigurációs beállítás ugyanabban az évszázadban van, mint a kivágás éve. A lehetőség értékénél nagyobb vagy azzal egyenlő értékek a leépítési év előtti évszázadban vannak. Ha például kétjegyű évkivágás
2050(alapértelmezett), a252025, a50pedig1950. 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.
A
SET DATEFORMATmunkamenet-beállítás nem lesz alkalmazva, ha betűrendes formában adja meg a hónapot.
| Alphabetical |
|---|
Apr[il] [15][,] 1996 |
Apr[il] 15[,] [19]96 |
Apr[il] 1996 [15] |
[15] Apr[il][,] 1996 |
15 Apr[il][,][19]96 |
15 [19]96 apr[il] |
[15] 1996 apr[il] |
1996 APR[IL] [15] |
1996 [15] APR[IL] |
ISO 8601 formátum
Az ISO 8601 formátum használatához meg kell adnia a formátum minden elemét, beleértve a T, a kettőspontokat (:) és a formátumban megjelenő pontot (.).
A zárójelek azt jelzik, hogy a második összetevő törtrésze nem kötelező. Az időösszetevő 24 órás formátumban van megadva. A T a datetime érték időrészének kezdetét jelzi.
Az ISO 8601 formátum használatának előnye, hogy nemzetközi szabvány, egyértelmű specifikációval. Ezt a formátumot a SET DATEFORMAT vagy SET LANGUAGE beállítás sem befolyásolja.
Examples:
2004-05-23T14:25:102004-05-23T14:25:10.487
| ISO 8601 |
|---|
yyyy-MM-ddTHH:mm:ss[.mmm] |
yyyyMMdd[ HH:mm:ss[.mmm]] |
Szétválasztás nélküli formátum
Ez a formátum hasonló az ISO 8601 formátumhoz, de nem tartalmaz dátumelválasztókat.
| Unseparated |
|---|
yyyyMMdd HH:mm:ss[.mmm] |
ODBC formátum
Az ODBC API feloldósorozatokat határoz meg a dátum- és időértékek megjelenítéséhez, amelyeket az ODBC időbélyeg-adatokat hív meg. Ezt az ODBC időbélyeg formátumot az SQL Server Microsoft OLE DB-szolgáltatója által támogatott OLE DB nyelvi definíció (DBGUID-SQL) is támogatja. Az ADO, az OLE DB és az ODBC-alapú API-kat használó alkalmazások ezt az ODBC-időbélyeg-formátumot használhatják dátumok és időpontok ábrázolására.
Az ODBC időbélyeg-feloldási sorozatai a következő formátumúak: { <literal_type> '<constant_value>' }:
<literal_type>a feloldósorozat típusát adja meg. Az időbélyegek három<literal_type>határozókkal rendelkeznek:-
d= csak dátum -
t= csak idő -
ts= időbélyeg (idő + dátum)
-
<constant_value>a feloldósorozat értéke.<constant_value>az alábbi formátumokat kell követnie az egyes<literal_type>:-
d:yyyy-MM-dd -
t:hh:mm:ss[.fff] -
ts:yyyy-MM-dd HH:mm:ss[.fff]
-
| ODBC |
|---|
{ ts '1998-05-02 01:23:56.123' } |
{ d '1990-10-02' } |
{ t '13:33:41' } |
A datetime tört másodperc pontosságának kerekítése
datetime értékek .000, .003vagy .007 másodpercre vannak kerekítve az alábbi példában látható módon.
SELECT '01/01/2024 23:59:59.999' AS [User-specified value],
CAST('01/01/2024 23:59:59.999' AS DATETIME) AS [System stored value]
UNION SELECT '01/01/2024 23:59:59.998', CAST('01/01/2024 23:59:59.998' AS DATETIME)
UNION SELECT '01/01/2024 23:59:59.997', CAST('01/01/2024 23:59:59.997' AS DATETIME)
UNION SELECT '01/01/2024 23:59:59.996', CAST('01/01/2024 23:59:59.996' AS DATETIME)
UNION SELECT '01/01/2024 23:59:59.995', CAST('01/01/2024 23:59:59.995' AS DATETIME)
UNION SELECT '01/01/2024 23:59:59.994', CAST('01/01/2024 23:59:59.994' AS DATETIME)
UNION SELECT '01/01/2024 23:59:59.993', CAST('01/01/2024 23:59:59.993' AS DATETIME)
UNION SELECT '01/01/2024 23:59:59.992', CAST('01/01/2024 23:59:59.992' AS DATETIME)
UNION SELECT '01/01/2024 23:59:59.991', CAST('01/01/2024 23:59:59.991' AS DATETIME)
UNION SELECT '01/01/2024 23:59:59.990', CAST('01/01/2024 23:59:59.990' AS DATETIME);
Itt van az eredményhalmaz.
| Felhasználó által megadott érték | Rendszer által tárolt érték |
|---|---|
01/01/2024 23:59:59.999 |
2024-01-02 00:00:00.000 |
01/01/2024 23:59:59.99801/01/2024 23:59:59.99701/01/2024 23:59:59.99601/01/2024 23:59:59.995 |
2024-01-01 23:59:59.997 |
01/01/2024 23:59:59.99401/01/2024 23:59:59.99301/01/2024 23:59:59.992 |
2024-01-01 23:59:59.993 |
01/01/2024 23:59:59.99101/01/2024 23:59:59.990 |
2024-01-01 23:59:59.990 |
ANSI és ISO 8601 megfelelőség
datetime nem ANSI- vagy ISO 8601-kompatibilis.
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 CONVERT függvények dátum- és időadatokkal való használatáról a CAST és CONVERTcímű témakörben olvashat.
Más dátum- és időtípusok konvertálása datetime 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 datetime 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ő beállítása 00:00:00.000. Az alábbi kód egy DATE érték DATETIME értékké alakításának eredményeit mutatja be.
DECLARE @date DATE = '12-21-16';
DECLARE @datetime DATETIME = @date;
SELECT @datetime AS '@datetime', @date AS '@date';
Itt van az eredményhalmaz.
@datetime @date
------------------------ -----------
2016-12-21 00:00:00.000 2016-12-21
Az előző példa régióspecifikus dátumformátumot (MM-DD-YY) használ.
DECLARE @date DATE = '12-21-16';
A példát úgy kell frissítenie, hogy megfeleljen a régió formátumának.
A példát az ISO 8601 szabványnak megfelelő dátumformátummal (yyyy-MM-dd) is elvégezheti. Például:
DECLARE @date DATE = '2016-12-21';
DECLARE @datetime DATETIME = @date;
SELECT @datetime AS '@datetime', @date AS '@date';
Ha az átalakítás időről (n), az időösszetevőt átmásolja, a dátumösszetevő pedig 1900-01-01. Ha a idő tört pontossága (n) érték nagyobb három számjegynél, az érték csonkolt, hogy illeszkedjen. Az alábbi példa egy TIME(4) érték DATETIME értékké alakításának eredményeit mutatja be.
DECLARE @time TIME(4) = '12:10:05.1237';
DECLARE @datetime DATETIME = @time;
SELECT @datetime AS '@datetime', @time AS '@time';
Itt van az eredményhalmaz.
@datetime @time
------------------------ --------------
1900-01-01 12:10:05.123 12:10:05.1237
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 DATETIME értékké alakításának eredményeit mutatja be.
DECLARE @smalldatetime SMALLDATETIME = '12-01-16 12:32';
DECLARE @datetime DATETIME = @smalldatetime;
SELECT @datetime AS '@datetime', @smalldatetime AS '@smalldatetime';
Itt van az eredményhalmaz.
@datetime @smalldatetime
------------------------ --------------------
2016-12-01 12:32:00.000 2016-12-01 12:32:00
Ha az átalakítás DATETIMEOFFSET(4) érték DATETIME értékké alakításának eredményeit mutatja be.
DECLARE @datetimeoffset DATETIMEOFFSET(4) = '1968-10-23 12:45:37.1234 +10:0';
DECLARE @datetime DATETIME = @datetimeoffset;
SELECT @datetime AS '@datetime', @datetimeoffset AS '@datetimeoffset';
Itt van az eredményhalmaz.
@datetime @datetimeoffset
------------------------ -------------------------------
1968-10-23 12:45:37.123 1968-10-23 12:45:37.1237 +10:0
Ha az átalakítás DATETIME2(4) érték DATETIME értékké alakításának eredményeit mutatja be.
DECLARE @datetime2 DATETIME2(4) = '1968-10-23 12:45:37.1237';
DECLARE @datetime DATETIME = @datetime2;
SELECT @datetime AS '@datetime', @datetime2 AS '@datetime2';
Itt van az eredményhalmaz.
@datetime @datetime2
------------------------ -------------------------
1968-10-23 12:45:37.123 1968-10-23 12:45:37.1237
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('2024-05-08 12:35:29.1234567 +12:15' AS TIME(7)) AS 'time',
CAST('2024-05-08 12:35:29.1234567 +12:15' AS DATE) AS 'date',
CAST('2024-05-08 12:35:29.123' AS SMALLDATETIME) AS 'smalldatetime',
CAST('2024-05-08 12:35:29.123' AS DATETIME) AS 'datetime',
CAST('2024-05-08 12:35:29.1234567 +12:15' AS DATETIME2(7)) AS 'datetime2',
CAST('2024-05-08 12:35:29.1234567 +12:15' AS DATETIMEOFFSET(7)) AS 'datetimeoffset';
Itt van az eredményhalmaz.
| Adattípus | Output |
|---|---|
time |
12:35:29.1234567 |
date |
2024-05-08 |
smalldatetime |
2024-05-08 12:35:00 |
datetime |
2024-05-08 12:35:29.123 |
datetime2 |
2024-05-08 12:35:29.1234567 |
datetimeoffset |
2024-05-08 12:35:29.1234567 +12:15 |