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
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL Database a Microsoft Fabric
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.
Leírás
Ingatlan | Érték |
---|---|
szintaxis | DATETIME |
használati | 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 | Egyik sem |
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 12 kö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 23 között, amelyek az órát jelölik.mm két számjegy, a 00 és a 59 között, amelyek a percet jelölik.ss két számjegyből áll, a 00 és a 59 között, amelyek a másodikat jelölik.n* nullától három számjegyig terjed, 0 és 999 között, amelyek a tört másodpercet jelölik. |
karakterhossz | 19 pozíció minimum 23 maximumig |
Tárterület mérete | 8 bájt |
pontossági |
.000 , .003 vagy .007 másodpercre kerekítve |
Alapértelmezett érték | 1900-01-01 00:00:00 |
Naptár | Gergely (az évek teljes tartományát tartalmazza) |
felhasználó által megadott tört másodperc pontosságú | Nem |
időzóna-eltolásérzékenység és -megőrzés | Nem |
Nyári időszámítási | Nem |
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_english
van 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 | Megrendelés |
---|---|
[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 |
Betűrendes formátum
A dátumadatokat a hónap teljes neveként megadva is megadhatja. Például az aktuális nyelven megadott April
vagy Apr
hó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), a25
2025
, a50
pedig1950
. 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 DATEFORMAT
munkamenet-beállítás nem lesz alkalmazva, ha betűrendes formában adja meg a hónapot.
Betűrendes |
---|
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.
Példák:
2004-05-23T14:25:10
2004-05-23T14:25:10.487
ISO 8601 |
---|
yyyy-MM-ddTHH:mm:ss[.mmm] |
yyyyMMdd[ HH:mm:ss[.mmm]] |
Nem formázott formátum
Ez a formátum hasonló az ISO 8601 formátumhoz, de nem tartalmaz dátumelválasztókat.
Nem átcsomagolt |
---|
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
, .003
vagy .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.998 01/01/2024 23:59:59.997 01/01/2024 23:59:59.996 01/01/2024 23:59:59.995 |
2024-01-01 23:59:59.997 |
01/01/2024 23:59:59.994 01/01/2024 23:59:59.993 01/01/2024 23:59:59.992 |
2024-01-01 23:59:59.993 |
01/01/2024 23:59:59.991 01/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
Példák
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 | Hozam |
---|---|
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 |