Udostępnij za pośrednictwem


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]

  • hh jest dwie cyfry od 0 do 14, które reprezentują liczbę godzin w czas przesunięcie strefy.

  • mm jest dwie cyfry od 0 do 59, reprezentujący liczbę dodatkowych minut w czas przesunięcie strefy.

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.