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


idő (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

Egy nap időpontját határozza meg. Az idő nem időzóna-tudatosságú, és 24 órás órára épül.

Note

Az Informatica-információkat a PDW-ügyfelek az Informatica Connector használatával biztosítják.

Időleírás

Property Value
Syntax time [ (tört második skálázás) ]
Usage DEKLARÁL @MyTime idő(7)

KÉSZÍTSD TÁBLÁZAT 1 (1. oszlop idő(7) )
tört másodperc skálázása A másodperc tört részének számjegyeinek számát adja meg.

Ez lehet 0 és 7 közötti egész szám. Az Informatica esetében ez 0 és 3 közötti egész szám lehet.

Az alapértelmezett törtméret 7 (100ns).

A Microsoft Fabricben ez lehet 0 és 6 közötti egész szám, alapértelmezett érték nélkül. A pontosságot a Microsoft Fabricben kell megadni.
Alapértelmezett sztringkonstansformátum

(alacsonyabb szintű ügyfélhez használatos)
hh:mm:ss[.nnnnnnn] az Informatica számára)

További információkért lásd a Visszafelé kompatibilitás a alacsonyabb szintű ügyfelekhez című szakaszt .
Range 00:00:00.0000000–23:59:59.99999999 (Informatica esetén 00:00:00.000–23:59:59.999)
Elemtartományok A hh két számjegyből áll, 0 és 23 között, amelyek az órát jelölik.

mm két számjegy, 0 és 59 között, amelyek a percet jelölik.

az ss két számjegy, 0 és 59 között, amelyek a másodikat jelölik.

n* nulla és hét számjegy között 0 és 9999999, amelyek a tört másodpercet jelölik. Az Informatica esetében az n* nulla és három számjegy között van, 0 és 999 között.
Karakterhossz 8 pozíció minimum (óó:mm:ss) legfeljebb 16 (óó:mm:ss.nnnnnnnn). Az Informatica esetében a maximális érték 12 (óó:mm:ss.nnn).
Precizitás, méretarány

(a felhasználó csak a skálázást adja meg)
Lásd az alábbi táblázatot.
Tárterület mérete A rögzített 5 bájt az alapértelmezett érték 100ns tört másodperces pontossággal. Az Informatica-ban az alapértelmezett érték 4 bájt, rögzített, az alapértelmezett érték 1ms tört másodperces pontosság.
Accuracy 100 nanoszekundum (1 ezredmásodperc az Informatica-ban)
Alapértelmezett érték 00:00:00

Ez az érték a hozzáfűzött időrészhez használatos a dátumróldatetime2 vagy datetimeoffset közötti implicit átalakításra.
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
Megadott skálázás Eredmény (pontosság, skálázás) Oszlophossz (bájt) Fractional

seconds

pontosság
time (16,7) [(12,3) Informatica] 5 (4 az Informatica-ban) 7 (3 az Informatica-ban)
time(0) (8,0) 3 0-2
time(1) (10,1) 3 0-2
time(2) (11,2) 3 0-2
time(3) (12,3) 4 3-4
idő(4)* (13,4) 4 3-4
time(5)* (14,5) 5 5-7
time(6)* (15,6) 5 5-7
time(7)* + (16,7) 5 5-7

* Az Informatica nem támogatja.

+ A Microsoft Fabric nem támogatja.

Támogatott sztringkonstansformátumok az időhöz

Az alábbi táblázat az időadat-típus érvényes sztringkonstans-formátumát mutatja be.

SQL Server Description
hh:mm[:ss][:tört másodpercek][AM][PM]

hh:mm[:ss][.töredékes másodpercek][AM][PM]

hhAM[PM]

hh AM[PM]
A 0 óraérték az éjfél utáni órát (AM) jelöli, függetlenül attól, hogy az AM meg van-e adva. A PM nem adható meg, ha az óra értéke 0.

A 01-től 11-ig tartó óraértékek a dél előtti órákat jelölik, ha sem am, sem pm nincs megadva. Az értékek az AM megadásakor a dél előtti órákat jelölik. Az értékek dél után órákat jelölnek, ha a PM meg van adva.

A 12 órás érték azt az órát jelöli, amely délben kezdődik, ha sem am, sem pm nincs megadva. Ha az AM meg van adva, az érték az éjfélkor kezdődő órát jelöli. Ha a PM meg van adva, az érték a délben kezdődő órát jelöli. A 12:01 például dél után 1 perccel, 12:01-kor; és 12:01 éjfél után egy perccel. A 12:01-et ugyanaz adja meg, mint a 00:01 vagy 00:01 óra.

A 13 és 23 óra közötti óraértékek dél után órákat jelölnek, ha nincs megadva am vagy PM. Az értékek a pm megadásakor a dél utáni órákat is jelölik. Az AM nem adható meg, ha az óra értéke 13 és 23 között van.

A 24 órás érték érvénytelen. Az éjféli ábrázoláshoz használjon 12:00-t vagy 00:00-t.

Ezredmásodperc előtt kettőspont (:) vagy pont (.). Kettőspont használata esetén a szám másodpercenként ezredmásedik értéket jelent. Pont használata esetén egy számjegy a másodperc tizedét, a két számjegy a másodperc századát, a három számjegy pedig a másodperc ezredrészét jelenti. A 12:30:20:1 például 20 és 10 ezredmásedik másodpercet jelez 12:30 után; A 12:30:20.1 20 és egytized másodpercet jelez 12:30 után.
ISO 8601 Notes
hh:mm:ss

hh:mm[:ss][.töredékes másodpercek]
Az óó két számjegy, 0 és 23 között, amelyek az időzóna eltolásában lévő órák számát jelölik.

mm két számjegy, 0 és 59 között, amelyek az időzóna-eltolás további perceinek számát jelölik.
ODBC Notes
{t 'hh:mm:ss[.tört másodperc]'} ODBC API-specifikus.

Az ANSI és az ISO 8601 szabványoknak való megfelelés

A 24. óra az ISO 8601 (5.3.2 és 5.3) által meghatározott éjféli és 59-esnél nagyobb ugrást nem támogatja, hogy visszamenőlegesen kompatibilis legyen, és összhangban legyen a meglévő dátum- és időtípusokkal.

Az alapértelmezett (alacsonyabb szintű ügyfélhez használt) sztringkonstansformátum igazodik az SQL standard űrlaphoz, amely hh:mm:ss[.nnnnnnnnn] néven van definiálva. Ez a formátum az IDŐ ISO 8601-definícióhoz hasonlít, a tört másodpercek kivételével.

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[.nnnnnnn] 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 SQL Server 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áról a CAST és a CONVERT (Transact-SQL) című témakörben talál további információt.

Idő(n) adattípus átalakítása más dátum- és időtípusokká

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

Ha az átalakítás idő(n) értékre történik, a program az órát, a percet és a másodpercet másolja ki. Ha a cél pontossága kisebb, mint a forrás pontossága, a tört másodperc felfelé kerekítve lesz a cél pontosságának megfelelően. Az alábbi példa egy time(4) érték time(3) értékké alakításának eredményeit mutatja be.

DECLARE @timeFrom TIME(4) = '12:34:54.1237';
DECLARE @timeTo TIME(3) = @timeFrom;

SELECT @timeTo AS 'time(3)', @timeFrom AS 'time(4)';

Itt van az eredmények összessége.

time(3)      time(4)  
------------ -------------  
12:34:54.124 12:34:54.1237  

Ha a konvertálás a mai napig érvényes, az átalakítás sikertelen lesz, és a 206-os hibaüzenet jelenik meg: "Operandus típusú ütközés: a dátum nem kompatibilis az idővel".

Ha az átalakítás dátum/idő, óra, perc és második értékre van másolva; és a dátum összetevő értéke "1900-01-01". Ha az idő(n) érték tört másodperces pontossága nagyobb három számjegynél, a dátum/idő eredmény csonkolt lesz. Az alábbi kód egy time(4) érték datetime értékké alakításának eredményeit mutatja be.

DECLARE @time TIME(4) = '12:15:04.1237';
DECLARE @datetime DATETIME = @time;

SELECT @time AS '@time', @datetime AS '@datetime';

Itt van az eredmények összessége.

@time         @datetime  
------------- -----------------------  
12:15:04.1237 1900-01-01 12:15:04.123  

Ha az átalakítás kisdátumidőre történik, a dátum "1900-01-01" értékre van állítva, és az óra- és percértékek fel vannak kerekítve. A másodperc és a tört másodperc értéke 0. Az alábbi kód egy time(4) érték smalldatetime értékké alakításának eredményeit mutatja be.

A percérték felfelé kerekítésének megjelenítése:

DECLARE @time TIME(4) = '12:15:59.9999';
DECLARE @smalldatetime SMALLDATETIME = @time;

SELECT @time AS '@time', @smalldatetime AS '@smalldatetime';

Itt van az eredmények összessége.

@time            @smalldatetime  
---------------- -----------------------  
12:15:59.9999    1900-01-01 12:16:00--  

Az óraérték felfelé kerekítésének megjelenítése:

DECLARE @time TIME(4) = '12:59:59.9999';
DECLARE @smalldatetime SMALLDATETIME = @time;

SELECT @time AS '@time', @smalldatetime AS '@smalldatetime';

Itt van az eredmények összessége.

@time            @smalldatetime  
---------------- -----------------------  
12:59:59.9999    1900-01-01 13:00:00  

Ha az átalakítás datetimeoffset(n)-ra történik, a dátum értéke "1900-01-01", és a program kimásolja az időt. Az időzóna eltolása +00:00 értékre van állítva. Ha az idő(n) érték tört másodperces pontossága nagyobb, mint a datetimeoffset(n) érték pontossága, az érték felfelé kerekítve lesz, hogy illeszkedjen. Az alábbi példa egy érték típussá time(4) alakításának datetimeoffset(3) eredményeit mutatja be.

DECLARE @time TIME(4) = '12:15:04.1237';
DECLARE @datetimeoffset DATETIMEOFFSET(3) = @time;

SELECT @time AS '@time', @datetimeoffset AS '@datetimeoffset';

Itt van az eredmények összessége.

@time         @datetimeoffset  
------------- ------------------------------  
12:15:04.1237 1900-01-01 12:15:04.124 +00:00  

A datetime2(n)-ra való konvertáláskor a dátum értéke "1900-01-01", az időösszetevő másolása, az időzóna eltolása pedig 00:00. Ha a datetime2(n) érték tört másodperces pontossága nagyobb, mint az idő(n) érték, az érték felfelé kerekítve lesz, hogy illeszkedjen. Az alábbi példa egy time(4) érték datetime2(2) értékké alakításának eredményeit mutatja be.

DECLARE @time TIME(4) = '12:15:04.1237';
DECLARE @datetime2 DATETIME2(3) = @time;

SELECT @datetime2 AS '@datetime2', @time AS '@time';

Itt van az eredmények összessége.

@datetime2              @time  
----------------------- -------------  
1900-01-01 12:15:04.124 12:15:04.1237  

Sztringkonstansok konvertálása időre(n)

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 lesznek. Az alábbi táblázat a sztringkonstans idő adattípussá alakítására vonatkozó szabályokat mutatja be.

Bemeneti sztring literálja Áttérési szabály
ODBC DÁTUMA Az ODBC-sztringkonstansok a datetime adattípusra vannak leképezve. Az ODBC DATETIME-konstansokból időtípusokba történő hozzárendelési műveletek implicit konverziót okoznak a datetime és a konvertálási szabályok által meghatározott típus között.
ODBC IDŐ Lásd a fenti ODBC DATE szabályt.
ODBC DÁTUMIDŐPONTJA Lásd a fenti ODBC DATE szabályt.
Csak DÁTUM A rendszer alapértelmezett értékeket ad meg.
Csak IDŐ Trivial
Csak IDŐZÓNA A rendszer alapértelmezett értékeket ad meg.
DÁTUM + IDŐ A bemeneti sztring TIME részét használja a rendszer.
DÁTUM + IDŐZÓN Tilos.
IDŐ + IDŐZÓNA A bemeneti sztring TIME részét használja a rendszer.
DÁTUM + IDŐ + IDŐZÓNA A rendszer a helyi DATETIME IDŐ részét használja.

Examples

A. Dátum- és időadatok összehasonlítása

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

B. Érvényes idősztring-literálok beszúrása idő(7) oszlopba

Az alábbi táblázat különböző sztringkonstansokat sorol fel, amelyeket be lehet szúrni egy idő típusú oszlopba (7) az oszlopban tárolt értékekkel.

Sztringkonstans formátumtípus Sztringkonstans beszúrása tárolt time(7) érték Description
SQL Server '01:01:01:123AM' 01:01:01.1230000 Ha a kettőspont (:) a tört másodperc pontossága előtt jön, a skálázás nem haladhatja meg a három pozíciót, vagy hiba lép fel.
SQL Server '01:01:01.1234567 AM' 01:01:01.1234567 Am vagy PM megadásakor az idő 24 órás formátumban lesz tárolva a literális AM vagy PM nélkül
SQL Server '01:01:01.1234567 PM' 13:01:01.1234567 Am vagy PM megadásakor az idő 24 órás formátumban lesz tárolva a literális AM vagy PM nélkül
SQL Server '01:01:01.1234567PM' 13:01:01.1234567 Az am vagy a pm előtti tér megadása nem kötelező.
SQL Server '01AM' 01:00:00.0000000 Ha csak az óra van megadva, az összes többi érték 0.
SQL Server '01 AM' 01:00:00.0000000 Az am vagy a pm előtti tér megadása nem kötelező.
SQL Server '01:01:01' 01:01:01.0000000 Ha a tört másodperc pontossága nincs megadva, az adattípus által meghatározott minden pozíció 0.
ISO 8601 '01:01:01.1234567' 01:01:01.1234567 Az ISO 8601-nek való megfeleléshez használjon 24 órás formátumot, nem am vagy pm formátumot.
ISO 8601 '01:01:01.1234567 +01:01' 01:01:01.1234567 Az opcionális időzóna-különbség (TZD) engedélyezett a bemenetben, de nincs tárolva.

C. Idősztring-literál beszúrása az egyes dátum- és idődátumtípusok oszlopaiba

Az alábbi táblázatban az első oszlop egy idősztring-literált jelenít meg, amelyet a második oszlopban látható dátum- vagy időadattípus adatbázistábla-oszlopába kell beilleszteni. A harmadik oszlop az adatbázistábla oszlopában tárolt értéket jeleníti meg.

Sztringkonstans beszúrása Oszlop adattípusa Oszlopban tárolt érték Description
'12:12:12.1234567' time(7) 12:12:12.1234567 Ha a tört másodperc pontossága meghaladja az oszlophoz megadott értéket, a sztring hiba nélkül csonkolja.
'2007-05-07' date NULL Bármely időérték az INSERT utasítás sikertelenségéhez vezet.
'12:12:12' smalldatetime 1900-01-01 12:12:00 A tört másodperc pontossági értéke miatt az INSERT utasítás meghiúsul.
'12:12:12.123' datetime 1900-01-01 12:12:12.123 A három pozíciónál hosszabb második pontosság az INSERT utasítás sikertelenségéhez vezet.
'12:12:12.1234567' datetime2(7) 1900-01-01 12:12:12.1234567 Ha a tört másodperc pontossága meghaladja az oszlophoz megadott értéket, a sztring hiba nélkül csonkolja.
'12:12:12.1234567' datetimeoffset(7) 1900-01-01 12:12:12.1234567 +00:00 Ha a tört másodperc pontossága meghaladja az oszlophoz megadott értéket, a sztring hiba nélkül csonkolja.

Lásd még:

CAST és CONVERT (Transact-SQL)