Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL Analytics-eindpunt in Microsoft Fabric
Magazijn in Microsoft Fabric
SQL-database in Microsoft Fabric Preview
Definieert een tijdstip van een dag. De tijd is zonder tijdzonebewustzijn en is gebaseerd op een 24-uurs klok.
Note
Informatica-informatie wordt verstrekt aan PDW-klanten met behulp van de Informatica Connector.
time Description
| Property | Value |
|---|---|
| Syntax | time [ (fractionele tweede schaal) ] |
| Usage | DECLAREER @MyTime tijd(7) CREATE TABLE Table1 ( Column1 time(7) ) |
| schalen van fractionele seconden | Hiermee geeft u het aantal cijfers voor het breukgedeelte van de seconden op. Dit kan een geheel getal zijn van 0 tot 7. Voor Informatica kan dit een geheel getal zijn van 0 tot 3. De standaard fractionele schaal is 7 (100ns). In Microsoft Fabric kan dit een geheel getal zijn van 0 tot 6, zonder standaardwaarde. Precisie moet worden opgegeven in Microsoft Fabric. |
| Letterlijke standaardtekenreeksindeling (gebruikt voor client op down-level) |
uu:mm:ss[.nnnnnnn] voor Informatica) Zie de sectie Achterwaartse compatibiliteit voor clients op lager niveau voor meer informatie. |
| Range | 00:00:00.000000 tot en met 23:59:59.999999999 (00:00:00.000 tot en met 23:59:59.999 voor Informatica) |
| Element ranges | uu is twee cijfers, variërend van 0 tot 23, die het uur vertegenwoordigen. mm is twee cijfers, variërend van 0 tot 59, die de minuut vertegenwoordigen. ss is twee cijfers, variërend van 0 tot 59, die de tweede vertegenwoordigen. n* is nul tot zeven cijfers, variërend van 0 tot 9999999, die de fractionele seconden vertegenwoordigen. Voor Informatica is n* nul tot drie cijfers, variërend van 0 tot 999. |
| Character length | 8 posities minimum (uu:mm:ss) tot 16 maximum (uu:mm:ss.nnnnnnnn). Voor Informatica is het maximum 12 (uu:mm:ss.nnn). |
| Precision, scale (gebruiker geeft alleen schaal aan) |
Zie de onderstaande tabel. |
| Storage size | 5 bytes, vast, is de standaardwaarde met de standaardwaarde van 100ns fractionele seconde precisie. In Informatica is de standaardwaarde 4 bytes, vast, met de standaardwaarde van 1 ms fractionele seconde precisie. |
| Accuracy | 100 nanoseconden (1 milliseconde in Informatica) |
| Default value | 00:00:00 Deze waarde wordt gebruikt voor het toegevoegde tijdgedeelte voor impliciete conversie van datumtot datum/tijd2 of datetimeoffset. |
| Door de gebruiker gedefinieerde tweede precisie | Yes |
| Tijdzoneverschil bewust en behoud | No |
| Zomertijdbewust | No |
| Specified scale | Resultaat (precisie, schaal) | Kolomlengte (bytes) | Fractional seconds precision |
|---|---|---|---|
| time | (16,7) [(12,3) in Informatica] | 5 (4 in Informatica) | 7 (3 in Informatica) |
| 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 |
| time(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 |
* Niet ondersteund in Informatica.
+ Niet ondersteund in Microsoft Fabric.
Ondersteunde letterlijke tekenreeksindelingen voor tijd
In de volgende tabel ziet u de geldige letterlijke notaties voor tekenreeksen voor het tijdgegevenstype .
| SQL Server | Description |
|---|---|
| hh:mm[:ss][:fractional seconds][AM][PM] hh:mm[:ss][.fractional seconds][AM][PM] hhAM[PM] hh AM[PM] |
De uurwaarde van 0 vertegenwoordigt het uur na middernacht (AM), ongeacht of AM is opgegeven. PM kan niet worden opgegeven wanneer het uur gelijk is aan 0. Uurwaarden van 01 tot en met 11 vertegenwoordigen de uren vóór de middag als am of PM niet is opgegeven. De waarden vertegenwoordigen de uren vóór de middag wanneer AM is opgegeven. De waarden vertegenwoordigen uren na de middag als PM is opgegeven. De uurwaarde 12 vertegenwoordigt het uur dat begint om de middag als am of PM niet is opgegeven. Als AM is opgegeven, geeft de waarde het uur aan dat begint om middernacht. Als PM is opgegeven, geeft de waarde het uur aan dat begint om de middag. 12:01 is bijvoorbeeld 1 minuut na middag, net als 12:01 pm; en 12:01 uur is één minuut na middernacht. Het opgeven van 12:01 uur is hetzelfde als het 00:01 of 00:01 UUR. Uurwaarden van 13 tot en met 23 vertegenwoordigen uren na middag als AM of PM niet is opgegeven. De waarden vertegenwoordigen ook de uren na middag wanneer PM is opgegeven. AM kan niet worden opgegeven wanneer de uurwaarde 13 tot en met 23 is. Een uurwaarde van 24 is ongeldig. Gebruik 12:00 of 00:00 uur om middernacht weer te geven. Milliseconden kunnen worden voorafgegaan door een dubbele punt (:) of een punt (.). Als er een dubbele punt wordt gebruikt, betekent het getal duizendste van een seconde. Als een punt wordt gebruikt, betekent één cijfer tienden-van-een-seconde, twee cijfers betekenen honderdste van een seconde en drie cijfers duizendtallen-van-een-seconde. 12:30:20:1 geeft bijvoorbeeld 20 en duizendde seconden voorbij 12:30 aan; 12:30:20.1 geeft 20 en tiende seconden voorbij 12:30 aan. |
| ISO 8601 | Notes |
|---|---|
| hh:mm:ss hh:mm[:ss][.fractional seconds] |
uu is twee cijfers, variërend van 0 tot 23, die het aantal uren in de tijdzoneverschil vertegenwoordigen. mm is twee cijfers, variërend van 0 tot 59, die het aantal extra minuten in de tijdzone-offset vertegenwoordigen. |
| ODBC | Notes |
|---|---|
| {t 'uu:mm:ss[.fractionele seconden]'} | ODBC API-specifiek. |
Naleving van ANSI- en ISO 8601-standaarden
Het gebruik van uur 24 om middernacht en schrikkel tweede te vertegenwoordigen boven de 59 zoals gedefinieerd door ISO 8601 (5.3.2 en 5.3) wordt niet ondersteund om compatibel te zijn met eerdere versies en consistent te zijn met de bestaande datum- en tijdtypen.
De standaardtekenreeks letterlijke notatie (gebruikt voor client op down-level) wordt uitgelijnd met het standaardformulier van SQL, dat is gedefinieerd als uu:mm:ss[.nnnnnnn]. Deze indeling lijkt op de ISO 8601-definitie voor TIME, met uitzondering van fractionele seconden.
Compatibiliteit met eerdere versies voor clients met een lager niveau
Sommige downlevel clients ondersteunen de gegevenstypen tijd, datum, datum/tijd2 en datetimeoffset niet. In de volgende tabel ziet u de typetoewijzing tussen een exemplaar op hoger niveau van SQL Server en clients op een lager niveau.
| SQL Server-gegevenstype | Standaardtekenreeks letterlijke notatie doorgegeven aan client op down-level | Down-level ODBC | Down-level OLEDB | Down-level JDBC | Down-level SQLCLIENT |
|---|---|---|---|---|---|
| time | hh:mm:ss[.nnnnnnn] | SQL_WVARCHAR of SQL_VARCHAR | DBTYPE_WSTRor DBTYPE_STR | Java.sql.String | Tekenreeks of sqstring |
| date | YYYY-MM-DD | SQL_WVARCHAR of SQL_VARCHAR | DBTYPE_WSTRor DBTYPE_STR | Java.sql.String | Tekenreeks of sqstring |
| datetime2 | YYYY-MM-DD hh:mm:ss[.nnnnnnn] | SQL_WVARCHAR of SQL_VARCHAR | DBTYPE_WSTRor DBTYPE_STR | Java.sql.String | Tekenreeks of sqstring |
| datetimeoffset | JJJJ-MM-DD uu:mm:ss[.nnnnnnn] [+|-]hh:mm | SQL_WVARCHAR of SQL_VARCHAR | DBTYPE_WSTRor DBTYPE_STR | Java.sql.String | Tekenreeks of sqstring |
Datum- en tijdgegevens converteren
Wanneer u converteert naar datum- en tijdgegevenstypen, weigert SQL Server alle waarden die niet als datums of tijden kunnen worden herkend. Zie CAST en CONVERT (Transact-SQL) voor informatie over het gebruik van de functies CAST en CONVERT met datum- en tijdgegevens
Tijd(n) gegevenstype converteren naar andere datum- en tijdtypen
In deze sectie wordt beschreven wat er gebeurt wanneer een tijdgegevenstype wordt geconverteerd naar andere datum- en tijdgegevenstypen.
Wanneer de conversie naar time(n) is, worden het uur, de minuut en de seconden gekopieerd. Wanneer de doelprecisie kleiner is dan de bronprecisie, worden de fractionele seconden naar boven afgerond om de doelprecisie aan te passen. In het volgende voorbeeld ziet u de resultaten van het converteren van een time(4) waarde naar een time(3)-waarde.
DECLARE @timeFrom TIME(4) = '12:34:54.1237';
DECLARE @timeTo TIME(3) = @timeFrom;
SELECT @timeTo AS 'time(3)', @timeFrom AS 'time(4)';
Hier is het resultatenoverzicht.
time(3) time(4)
------------ -------------
12:34:54.124 12:34:54.1237
Als de conversie tot datum is, mislukt de conversie en wordt het foutbericht 206 gegenereerd: "Operand type conflict: date is incompatibel met tijd".
Wanneer de conversie is naar datum/tijd, uur, minuut en tweede waarden worden gekopieerd; en het datumonderdeel is ingesteld op '1900-01-01'. Wanneer de precisie van de fractionele seconden van de tijd(n) groter is dan drie cijfers, wordt het datum/tijd-resultaat afgekapt. De volgende code toont de resultaten van het converteren van een time(4) waarde naar een datetime waarde.
DECLARE @time TIME(4) = '12:15:04.1237';
DECLARE @datetime DATETIME = @time;
SELECT @time AS '@time', @datetime AS '@datetime';
Hier is het resultatenoverzicht.
@time @datetime
------------- -----------------------
12:15:04.1237 1900-01-01 12:15:04.123
Wanneer de conversie is ingesteld op smalldatetime, wordt de datum ingesteld op '1900-01-01' en worden de waarden voor uren en minuten naar boven afgerond. De seconden en fractionele seconden zijn ingesteld op 0. De volgende code toont de resultaten van het converteren van een time(4) waarde naar een smalldatetime waarde.
Afronden van de minuutwaarde weergeven:
DECLARE @time TIME(4) = '12:15:59.9999';
DECLARE @smalldatetime SMALLDATETIME = @time;
SELECT @time AS '@time', @smalldatetime AS '@smalldatetime';
Hier is het resultatenoverzicht.
@time @smalldatetime
---------------- -----------------------
12:15:59.9999 1900-01-01 12:16:00--
Afronden van de uurwaarde weergeven:
DECLARE @time TIME(4) = '12:59:59.9999';
DECLARE @smalldatetime SMALLDATETIME = @time;
SELECT @time AS '@time', @smalldatetime AS '@smalldatetime';
Hier is het resultatenoverzicht.
@time @smalldatetime
---------------- -----------------------
12:59:59.9999 1900-01-01 13:00:00
Als de conversie is ingesteld op datetimeoffset(n), wordt de datum ingesteld op '1900-01-01' en wordt de tijd gekopieerd. De tijdzone-offset is ingesteld op +00:00. Wanneer de precisie van de fractionele seconden van de tijd(n) waarde groter is dan de precisie van de datum/tijdoffset(n) waarde, wordt de waarde naar boven afgerond. In het volgende voorbeeld ziet u de resultaten van het converteren van een time(4) waarde naar een datetimeoffset(3) type.
DECLARE @time TIME(4) = '12:15:04.1237';
DECLARE @datetimeoffset DATETIMEOFFSET(3) = @time;
SELECT @time AS '@time', @datetimeoffset AS '@datetimeoffset';
Hier is het resultatenoverzicht.
@time @datetimeoffset
------------- ------------------------------
12:15:04.1237 1900-01-01 12:15:04.124 +00:00
Bij het converteren naar datetime2(n), wordt de datum ingesteld op '1900-01-01', wordt het tijdonderdeel gekopieerd en wordt de tijdzone-offset ingesteld op 00:00. Wanneer de precisie van de fractionele seconden van de datum/tijd2(n) -waarde groter is dan de tijdswaarde(n), wordt de waarde naar boven afgerond. In het volgende voorbeeld ziet u de resultaten van het converteren van een time(4) waarde naar een datetime2(2)-waarde.
DECLARE @time TIME(4) = '12:15:04.1237';
DECLARE @datetime2 DATETIME2(3) = @time;
SELECT @datetime2 AS '@datetime2', @time AS '@time';
Hier is het resultatenoverzicht.
@datetime2 @time
----------------------- -------------
1900-01-01 12:15:04.124 12:15:04.1237
Letterlijke tekenreeks converteren naar tijd(n)
Conversies van letterlijke tekenreeksen tot datum- en tijdtypen zijn toegestaan als alle delen van de tekenreeksen geldige notaties hebben. Anders wordt er een runtimefout gegenereerd. Impliciete conversies of expliciete conversies die geen stijl opgeven, van datum- en tijdtypen tot letterlijke tekenreeksen hebben de standaardindeling van de huidige sessie. De volgende tabel bevat de regels voor het converteren van een letterlijke tekenreeks naar het tijdgegevenstype .
| Letterlijke invoertekenreeks | Conversion Rule |
|---|---|
| ODBC DATE | Letterlijke odbc-tekenreeksen worden toegewezen aan het gegevenstype datum/tijd . Elke toewijzingsbewerking van LETTERLIJKE ODBC DATETIME in tijdtypen veroorzaakt een impliciete conversie tussen datum/tijd en dit type, zoals gedefinieerd door de conversieregels. |
| ODBC TIME | Zie de bovenstaande ODBC DATE-regel. |
| ODBC DATETIME | Zie de bovenstaande ODBC DATE-regel. |
| DATE only | Standaardwaarden worden opgegeven. |
| TIME only | Trivial |
| TIMEZONE only | Standaardwaarden worden opgegeven. |
| DATUM + TIJD | Het tijdgedeelte van de invoertekenreeks wordt gebruikt. |
| DATE + TIMEZONE | Not allowed. |
| TIME + TIMEZONE | Het tijdgedeelte van de invoertekenreeks wordt gebruikt. |
| DATE + TIME + TIMEZONE | Het tijdgedeelte van lokale DATUM/tijd wordt gebruikt. |
Examples
A. Datum- en tijdgegevenstypen vergelijken
In het volgende voorbeeld worden de resultaten van het casten van een tekenreeks vergeleken met elke datum en tijd gegevenstype.
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';
| Data type | 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. Geldige tijdtekenreeks letterlijk invoegen in een tijd(7) kolom
De volgende tabel bevat verschillende letterlijke tekenreeksen die kunnen worden ingevoegd in een kolom met gegevenstypetijd(7) met de waarden die vervolgens in die kolom worden opgeslagen.
| Type letterlijke tekenreeksnotatie | Letterlijke tekenreeks ingevoegd | time(7) waarde die is opgeslagen | Description |
|---|---|---|---|
| SQL Server | '01:01:01:123AM' | 01:01:01.1230000 | Wanneer een dubbele punt (:) vóór de precisie van fractionele seconden komt, kan de schaal niet groter zijn dan drie posities of wordt er een fout gegenereerd. |
| SQL Server | '01:01:01.1234567 AM' | 01:01:01.1234567 | Wanneer AM of PM is opgegeven, wordt de tijd opgeslagen in de notatie van 24 uur zonder de letterlijke AM of PM |
| SQL Server | '01:01:01.1234567 PM' | 13:01:01.1234567 | Wanneer AM of PM is opgegeven, wordt de tijd opgeslagen in de notatie van 24 uur zonder de letterlijke AM of PM |
| SQL Server | '01:01:01.1234567PM' | 13:01:01.1234567 | Een spatie voor AM of PM is optioneel. |
| SQL Server | '01AM' | 01:00:00.0000000 | Wanneer alleen het uur is opgegeven, zijn alle andere waarden 0. |
| SQL Server | '01 AM' | 01:00:00.0000000 | Een spatie voor AM of PM is optioneel. |
| SQL Server | '01:01:01' | 01:01:01.0000000 | Wanneer de precisie van fractionele seconden niet is opgegeven, is elke positie die wordt gedefinieerd door het gegevenstype 0. |
| ISO 8601 | '01:01:01.1234567' | 01:01:01.1234567 | Als u wilt voldoen aan ISO 8601, gebruikt u een indeling van 24 uur, niet AM of PM. |
| ISO 8601 | '01:01:01.1234567 +01:01' | 01:01:01.1234567 | Het optionele tijdzoneverschil (TZD) is toegestaan in de invoer, maar wordt niet opgeslagen. |
C. Letterlijke tijdreeks invoegen in kolommen van elk datum- en tijddatumtype
In de volgende tabel toont de eerste kolom een letterlijke tijdtekenreeks die moet worden ingevoegd in een databasetabelkolom van het gegevenstype datum of tijd dat in de tweede kolom wordt weergegeven. In de derde kolom wordt de waarde weergegeven die wordt opgeslagen in de databasetabelkolom.
| Letterlijke tekenreeks ingevoegd | Kolomgegevenstype | Waarde die is opgeslagen in kolom | Description |
|---|---|---|---|
| '12:12:12.1234567' | time(7) | 12:12:12.1234567 | Als de precisie van de breuk seconden de opgegeven waarde voor de kolom overschrijdt, wordt de tekenreeks zonder fouten afgekapt. |
| '2007-05-07' | date | NULL | Elke tijdwaarde zorgt ervoor dat de INSERT-instructie mislukt. |
| '12:12:12' | smalldatetime | 1900-01-01 12:12:00 | Elke precisiewaarde van fractionele seconden zorgt ervoor dat de INSERT-instructie mislukt. |
| '12:12:12.123' | datetime | 1900-01-01 12:12:12.123 | Een tweede precisie die langer is dan drie posities, zorgt ervoor dat de INSERT-instructie mislukt. |
| '12:12:12.1234567' | datetime2(7) | 1900-01-01 12:12:12.1234567 | Als de precisie van de breuk seconden de opgegeven waarde voor de kolom overschrijdt, wordt de tekenreeks zonder fouten afgekapt. |
| '12:12:12.1234567' | datetimeoffset(7) | 1900-01-01 12:12:12.1234567 +00:00 | Als de precisie van de breuk seconden de opgegeven waarde voor de kolom overschrijdt, wordt de tekenreeks zonder fouten afgekapt. |