time (Transact-SQL)
Określa czas dnia.Czas jest bez świadomości strefę czasową i jest oparty na zegarze 24-godzinnym.
Aby zapoznać się z omówieniem wszystkich Transact-SQL Data i czas typów danych i funkcji, zobacz Data i godzina, Data typy i funkcje (języka Transact-SQL). Aby uzyskać informacje i przykłady, które są wspólne dla data i czas typów danych i funkcji zobacz Using Date and Time Data.
Opis czas
Właściwość |
Wartość |
---|---|
Składnia |
time [ (fractional second precision) ] |
Sposób użycia |
DECLARE MyTime @ time(7) CREATE tabela Tabela1 (Kolumna1 time(7) ) |
fractional seconds precision |
Określa liczbę cyfr ułamkowe części sekundy. Może to być liczbą całkowitą z zakresu od 0 do 7. Dokładność ułamkowa domyślną jest 7 (100ns). |
Sposób użycia |
DECLARE MyTime @ time(7) CREATE tabela Tabela1 (Kolumna1 time(7) ) |
Domyślny format literał ciąg znaków (używany do niedziałający-poziom klienta) |
hh: mm: ss [.nnnnnnn] Aby uzyskać więcej informacji, zobacz temat "zgodność z poprzednimi wersjami dla niedziałający-klientami poziom „ sekcji Using Date and Time Data. |
Zakres |
00:00:00.0000000 za pośrednictwem 23:59:59.9999999 |
Element zakresów |
hh jest dwie cyfry od 0 do 23, które reprezentują godzinę. mm jest dwie cyfry od 0 do 59, która reprezentuje minuty. ss to dwie cyfry od 0 do 59, reprezentujące drugiego. n * wynosi zero do siedmiu cyfr od 0 do 9999999, które reprezentują ułamków sekund. |
Długość |
minimum 8 stanowiska (gg: mm: ss) do maksymalnie 16 (hh:mm:ss.nnnnnnn) |
Skala dokładności, (użytkownik Określa skalę tylko) |
Określonej skaliWynik (precyzja, skala)Długość kolumna (bajty)Ułamkowe sekund precyzja
time (16,7)57
time(0) (8,0)30-2
time(1) (10,1)30-2
time(2) (11,2)30-2
time(3) (12,3)43-4
time(4) (13,4)43-4
time(5) (14,5)55-7
time(6) (15,6)55-7
time(7) (16,7)55-7
|
Limit rozmiaru składowania |
5 bajtów, stałe, jest to wartość domyślna z domyślnym 100ns ułamkowe dokładności drugiego. |
Dokładność |
100 nanosekundach. |
Wartość domyślna |
00:00:00 Ta wartość jest używana dla części czas dołączonych do niejawna konwersja z date Aby datetime2 lub datetimeoffset. |
Zdefiniowane przez użytkownika ułamkowe drugiego precyzji |
Tak |
czas strefy przesunięcie pamiętać i zachowania |
Nie |
Uwzględniaj pamiętać |
Nie |
Obsługiwany ciąg dosłownym formaty czas
W poniższej tabela przedstawiono prawidłowy ciąg literału formaty time Typ danych.
SQL Server |
Description |
---|---|
hh: mm [: ss] [: ułamków sekund] [AM] [PM] hh: mm [: ss] [.fractional sekundy] [AM] [PM] hhAM [PM] hh AM [PM] |
AM wartość godziny 0 reprezentuje godzinę od północy (AM), niezależnie od tego, czy została określona.Nie można określić PM, gdy godzinę jest równa 0. Godziny od 01 do 11 reprezentują godzin przedpołudniowych, jeśli określono ani AM lub PM.Wartości reprezentują godzin przedpołudniowych, gdy AM została określona.Wartości reprezentują godzin popołudniowych, jeśli określono PM. Wartość godziny 12 reprezentuje godzinę, który uruchamia proces w południe, jeśli określono ani AM lub PM.Jeśli AM określono wartość reprezentuje godzinę, która rozpoczyna się od północy.Jeżeli określono PM, wartość reprezentuje godzinę, która rozpoczyna się w południe.Na przykład 12: 01 jest 1 minuta popołudniowych, jak jest 12: 01 PM; i 12: 01 AM wynosi jedną minutę po północy.Określenie 12: 01 AM jest taka sama, jak określanie 00: 01 lub 00: 01. Godziny od 13 do 23 reprezentują godzin popołudniowych, jeśli nie zostanie określona AM lub PM.Wartości również reprezentować godzin popołudniowych, gdy określono PM.AM nie można określić, kiedy jest wartość godziny od 13 do 23. Wartość 24 godziny jest nieprawidłowy.Aby przedstawić północy, użyj 12: 00 AM lub 00: 00. Milisekundy może być poprzedzona odpowiadającą jej albo dwukropek (:) lub znak kropki (.).Jeśli używany jest dwukropek, numer oznacza, że thousandths z drugiego.Jeśli używany jest okres, pojedyncza cyfra oznacza dziesiątych z drugiego, dwie cyfry oznaczają setnych od drugiego, a trzy cyfry oznaczają thousandths z drugiego.Na przykład 12:30:20:1 wskazuje 20 i thousandth jednej sekundy ostatnich 12: 30; 12:30:20.1 wskazuje 20, a drugi - dziesiąta sekund po 12: 30. |
ISO 8601 |
Notatki |
---|---|
hh: mm: ss hh: mm [: ss] [.fractional sekundy] |
|
ODBC |
Notatki |
---|---|
{t "hh: mm: ss [.fractional sekundy] „} |
Określonego interfejsu API ODBC. W funkcji SQL Server 2008 Podobnie jak w SQL Server 2005. |
Zgodność z ANSI i ISO 8601 standardy czas
Przy użyciu 24 godziny do reprezentowania północy i drugi przestępnych ponad 59 zgodnie z definicją ISO 8601 (5.3.2 i 5.3) nie są obsługiwane się zapewniającej zgodność ze starszymi wersjami i zgodne z istniejącą data i typy wartości czas.Nie są one zdefiniowane przez SQL standard 2003.
Z formularza standardowego SQL, który jest zdefiniowany jako hh: mm: ss [.nnnnnnn] wyrówna format literał ciąg domyślnego (używany do klient niższego poziom).Ten format jest podobny do definicji ISO 8601 czas bez ułamków sekund.
Przykłady
A.Typy danych czas i porównywania data
W poniższym przykładzie porównanie wyniki dla rzutowanie ciąg do każdego date i time Typ danych.
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';
Typ danych |
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.Wstawianie prawidłowy czas ciąg literały do time(7) kolumna
W poniższej tabela przedstawiono literały ciągów znaków innym, która może być wstawiona do kolumna Typ danych time(7) wartości, które są następnie przechowywane w tej kolumnie.
Typ formatu literał ciąg znaków |
Literał ciąg znaków wstawianych |
wartość czas(7) przechowywana |
Description |
---|---|---|---|
SQL Server |
"01:01:01:123 AM" |
01:01:01.1230000 |
Jeśli dwukropek (:) pochodzi przed ułamków sekund precyzja, skala nie może przekraczać trzy pozycje lub zwiększony błąd. |
SQL Server |
"01:01:01.1234567 AM" |
01:01:01.1234567 |
Jeśli określono AM lub PM, czas jest przechowywany w formacie 24-godzinnym bez literału AM lub PM |
SQL Server |
"01:01:01.1234567 PM" |
13:01:01.1234567 |
Jeśli określono AM lub PM, czas jest przechowywany w formacie 24-godzinnym bez literału AM lub PM |
SQL Server |
"01:01:01.1234567 PM" |
13:01:01.1234567 |
Odstęp przed AM lub PM jest opcjonalne. |
SQL Server |
"01 AM" |
01:00:00.0000000 |
Jeśli określono tylko godzinę, wszystkie inne wartości to 0. |
SQL Server |
"01 AM" |
01:00:00.0000000 |
Odstęp przed AM lub PM jest opcjonalne. |
SQL Server |
'01:01:01' |
01:01:01.0000000 |
Gdy dokładność ułamków sekund nie jest określony, każdej pozycji, która jest zdefiniowana przez typ danych jest równa 0. |
ISO 8601 |
'01:01:01.1234567' |
01:01:01.1234567 |
Aby zgodne z ISO 8601, należy użyć formatu 24-godzinnym, nie AM lub PM. |
ISO 8601 |
'01:01:01.1234567 +01:01' |
01:01:01.1234567 |
Różnica opcjonalne strefę czasową (TZD) jest dozwolona na wejściu, ale nie jest przechowywany. |
C.Wstawianie dosłownym ciąg czas do kolumny każdej daty i godziny typ Data
W poniższej tabela pierwsza kolumna zawiera ciąg czas literału do wstawienia w kolumnie Typ danych Data lub godzina w drugiej kolumnie tabela bazy danych.Trzecia kolumna zawiera wartości, które będą przechowywane w kolumnie tabela bazy danych.
Literał ciąg znaków wstawianych |
Typ danych kolumna |
Wartość przechowywana kolumna |
Description |
---|---|---|---|
'12:12:12.1234567' |
time(7) |
12:12:12.1234567 |
Jeśli precyzji ułamków sekund przekracza wartość określoną dla kolumna, ciąg zostanie obcięty bez błędu. |
'2007-05-07' |
date |
WARTOŚCI NULL |
Każda wartość czas spowoduje, że w instrukcja INSERT nie powiedzie się. |
'12:12:12' |
smalldatetime |
1900-01-01 12:12:00 |
Każda wartość precyzji ułamków sekund spowoduje, że w instrukcja INSERT nie powiedzie się. |
'12:12:12.123' |
datetime |
1900-01-01 12:12:12.123 |
Wszelkie drugiego precyzji dłuższe niż trzy pozycje spowoduje, że w instrukcja INSERT nie powiedzie się. |
'12:12:12.1234567' |
datetime2(7) |
1900-01-01 12:12:12.1234567 |
Jeśli precyzji ułamków sekund przekracza wartość określoną dla kolumna, ciąg zostanie obcięty bez błędu. |
'12:12:12.1234567' |
datetimeoffset(7) |
1900-01-01 12:12:12.1234567 +00:00 |
Jeśli precyzji ułamków sekund przekracza wartość określoną dla kolumna, ciąg zostanie obcięty bez błędu. |
See Also