Udostępnij za pośrednictwem


Using Date and Time Data

W poniższych sekcjach w tym temacie przedstawiono informacje i przykłady, na podstawie daty i czas typów danych i funkcji.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).

  • Używanie operatorów z typy danych czas i Data

  • Korzystanie z narzędzia Data i czas formatów

  • Ciąg czas formatów i Data Literal

  • Format ciąg nierozdzielone

  • ISO 8601 format

  • Alfabetyczne formatów data

  • Formaty liczbowe Data

  • czas Formaty

  • Format data i czas ODBC

  • Konwertowanie data, czas, dateczas2 i dateczasoffset

  • Konwersja pomiędzy literały ciągów i czas(n), data, datetime2(n) i datetimeoffset(n)

  • Konwersja pomiędzy typy danych czas i Data

  • Za pomocą CAST i CONVERT czas, data, datetime2 i datetimeoffset

  • Argumenty stylu dla Functionq CONVERT

  • SQL Server Data i godzina ograniczenia

  • Zgodność ze starszymi wersjami dla klientów niższych poziomów

  • Przykłady

Używanie operatorów z typy danych czas i Data

(Operatory relacyjne<, <=, >, >=, <>), operatory porównania (=, <, <=, >, >=, <>, !<, !>) i operatorów logicznych i logicznych predykatów (IS NULL IS NOT NULL, W, BETWEEN EXISTS NOT EXISTS i LIKE) są obsługiwane przez wszystkie data i czas typów danych.

Data i czas arytmetyczne operatorów

Dodawanie i odejmowanie dla wszystkich dat i czas używać typów danychDATEADD and TEKST DATEDIFF.

Korzystanie z narzędzia Data i czas formatów

Formaty literał ciąg modyfikacji prezentacji danych w aplikacjach dla użytkowników, ale nie podstawowej liczby całkowitej pamięci masowej format w SQL Server. Jednak SQL Server może interpretować wartość data w formacie literał ciąg znaków, wprowadzania przez aplikację lub użytkownika do magazynu lub funkcja data, jak inne data. Interpretacja zależy od kombinacji format literału ciąg, typ danych i plików wykonywalnych DATEFORMAT USTAWIANIE, USTAWIANIE JĘZYKA and język domyślny opcji ustawienia.

Niektóre formaty literał ciąg znaków nie są zagrożone tych ustawień.Należy wziąć pod uwagę przy użyciu formatu, który nie zależy od tych ustawień, jeśli nie wiadomo, że ustawienia są poprawne dla formatu.The ISO 8601 format does not depend on these settings and is an international standard.Transact-SQL that uses string literal formats, dependent on system settings, is less portable.

Aby dowiedzieć się, domyślnym formatem literał ciąg znaków dla klientów niskiego poziom, zobacz temat dla każdej daty i czas typu danych.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).

The ydm data format is not supported for the date, datetime2 and datetimeoffset types. Błąd czas wykonywania zostanie zwiększony.

Ciąg czas formatów i Data Literal

Formaty tekstowe, następujące tabela listy inną data i czas.Firma Microsoft zaleca użycie data-czas formaty, które nie są zależne od DATEFORMAT i są w wielu językach.Formaty ISO 8601, '23T14:23:05 1998 - 02-' i ' 1998 - 02 - 23T14:23:05 - 08: 00 "są tylko formaty to międzynarodowy standard.Nie są DATEFORMAT lub domyślny język logowania zależne oraz są w wielu językach.

Data-czas części

Typ formatu

Przykład formatu

Można połączyć z innych formatów

DATEFORMAT zależnych

Wielojęzyczny

Data

UN-Separated

ISO 8601

'19980223'

Tak

Nie

Tak

Data

Liczbowy

'02/23/1998'

Tak

tak

Nie

(DATEFORMAT)

Data

ISO 8601 numeryczne

'1998-02-23'

Tak

Nie

Nie

Data

Alfabetycznie

"23 lutego 1998 r."

Tak

Nie

Nie

(miesiąca lub krótkie miesiąca)

Data

Data ODBC

{d ' 1998 - 02 - 23 "}

Nie

Nie

Tak

Godzina

ISO 8601 czas

'14:23:05'

'10:00:00.123456'

Tak

Nie

Tak

Godzina

Czas ODBC

{t "14: 23: 05"}

Nie

Nie

Tak

Data-czas

Data ODBC-czas

{ts ' 1998 - 02 - 23 14: 23: 05 "}

Nie

Nie

Tak

Data-czas

ISO 8601

"23T14:23:05 1998 02-„

"1998 - 02 - 23T14:23:05-08: '

Nie

Nie

Tak date, datetime2, datetimeoffset.

Data-czas

ANSI SQL Standard

'1998-02-23 14:23:05'

'1998-02-23 14:23:05 -08:00'

Nie

Nie)datetime2, datetimeoffset)

Tak)datetime)

Tak date, datetime2, datetimeoffset.

Data-czas

Połączenie z datą i czas

'19980223 14:23:05'

' 02/23/1998 2: 23: 05 PM "

'1998-02-23 10:00:00.123'

"23 lutego 1998 r 14: 23: 05"

Nie

Tak

(część data)

Nie

TimeZone

TimeZone format

'+12:00'

'01:00'

'-08:00'

"" Z"

Tak

Nie

Tak

Poniższe instrukcje wyświetlane efekty zestaw LANGUAGE i zestaw DATEFORMAT ustawień.

Format ciąg nierozdzielone

Można określić data dane jako ciąg nierozdzielone.Dane data można określić przy użyciu czterech, sześciu, lub osiem cyfr, pusty ciąg lub wartość czas bez wartości data.

Ustawienie sesja data FORMAT zestaw nie jest stosowane do wszystkich liczbowych data wpisów, takich jak wpisów numerycznych bez separatorów.Cyfra sześć lub osiem cyfr ciągi są zawsze interpretowane jako ymd. Miesiąc i dzień musi być zawsze dwie cyfry.

Jest to prawidłowy ciąg un-separated format: [19]960415

Ciąg tylko czterech cyfr jest interpretowana jako rok.Miesiąc i dzień są ustawione na 1 stycznia.W przypadku określenia tylko czterech cyfr, należy dołączyć wieku.

ISO 8601 format

data ISO 8601 z czas format jest następujący:

  • YYYY-MM-DDThh:mm:ss[.nnnnnnn][{+|-}hh:mm]

  • YYYY-MM-DDThh:mm:ss[.nnnnnnn]Z (UTC, Coordinated Universal Time)

The T indicates the start of the czas part of the data-czas value.

Aby używać formatu ISO 8601, należy określić każdy element w tym formacie.Obejmuje to literę T, dwukropki (:), znak + lub - oraz kropki (.).Nawiasy wskazują, że ułamkowe części sekund lub składniki przesunięcia strefy czasowej są opcjonalne.

W poniższym przykładzie są zwracane tylko zamówienia których cena jednostkowa jest mniejsza niż 5 zł, a następnie oblicza całkowitą sumę linii produktu oraz sumy.

Korzyści w formacie ISO 8601 to, że jest to międzynarodowy standard.Data i czas jednoznaczne są wartości, które są określane za pomocą tego formatu.Ten format nie jest zagrożony zestaw DATEFORMAT zestaw LANGUAGE logowania domyślnych ustawień języka.

Poniżej przedstawiono dwa przykłady wartości data i godziny, które są określane w formacie ISO 8601:

  • 2004-05-23T14:25:10

  • 2004 - 05 - 23T14:25:10.1234567 + 07: 00

Alfabetyczne formatów data

Można określić w ciągu miesiąca jako nazwę, na przykład Kwiecień lub skrót Kwi w języku angielskim.Te powinny być określone w ustawienie języka sesja, na przykład avril or avr w języku francuskim.Przecinki są opcjonalne i wielkości liter jest ignorowana.

Można użyć COMPUTE BY i COMPUTE bez BY w tej samej kwerendy.

  • Następująca kwerenda znajduje sumę wielkości zamówień oraz sumy wiersza typu produktu, a następnie oblicza sumę wielkości zamówień oraz sumy wiersza.

  • Jeśli określisz tylko dwie ostatnie cyfry roku, mniej niż dwie ostatnie cyfry wartość wartości dwie cyfry roku odcięcia opcja konfiguracja znajdują się w tym samym wieku jako ustawień skróconego formatu roku.Wartości, które są większe niż lub równa wartości tej opcji znajdują się w wieku, dostarczanego przed ustawień skróconego formatu roku.Na przykład jeśli dwie cyfry roku odcięcia jest 2050 (ustawienie domyślne), 25 jest interpretowana jako 2025 i 50 jest interpretowana jako 1950.Aby uniknąć niejednoznaczności, za pomocą czterech cyfr.

  • Następujący przykład wyszukuje sumę cen wszystkich zamówień, których cena jednostkowa jest mniejsza niż 5 dolarów zorganizowane według IDENTYFIKATORA produktu oraz ilość zamówienia, a także sumę cen wszystkich zamówień mniej niż 5 dolarów zorganizowane według tylko identyfikator produktu.

  • Można użyć innych funkcji agregujących w tym samym sprawozdaniu przez więcej niż jeden COMPUTE BY klauzula.

  • Poniższe formaty są prawidłowe formaty alfabetycznej SQL Server dane data. Znaki, które są ujęte w nawiasy są opcjonalne.

  • Kwerendy wygląda następująco:

  • Obliczanie sumy dla grup przy użyciu COMPUTE BY

  • W poniższym przykładzie użyto dwa przykłady kodu służącego do wyświetlania użycia COMPUTE BY.

  • [15] Apr[il][,] 1996

  • 15 Apr[il][,][19]96

  • 15 [19]96 apr[il]

  • [15] 1996 apr[il]

  • O.

  • Obliczanie sumy wartości za pomocą COMPUTE bez BY

Formaty liczbowe Data

Dane daty można określić z użyciem liczbowej wartości miesiąca.Na przykład data 97-05-20 przedstawia dwudziestego maja 1997 roku.Gdy jest używany liczbowy format daty, należy określić rok, miesiąc i dzień w ciągu, używając jako separatorów ukośników (/), myślników (-) lub kropek (.).Ciąg musi mieć następującą formę:

number separator number separator number [time] [time]

Prawidłowe są następujące formaty liczbowe:

  • Za pomocą GROUP BY i WHERE

  • [0]4-15-[19]96 -- (mdr)

  • GROUP BY przy użyciu wyrażenie

  • Następujący przykład grupy za pomocą wyrażenie.

  • Można grupować za pomocą wyrażenia wyrażenie nie zawiera funkcji agregacja.

  • Przy użyciu ORDER BY GROUP BY

  • W poniższym przykładzie znajduje średnia cena każdego typu produktu i porządkuje wyniki przez średnią cenę.

  • Przy użyciu klauzula HAVING

język domyślny DATEFORMAT sesja jest ustawiana przez język domyślny dla identyfikatora logowania, instrukcja zestaw LANGUAGE lub instrukcji zestaw DATEFORMAT.Kiedy język jest ustawiony na wartość us_english Logowanie domyślne lub w instrukcja zestaw LANGUAGE domyślnej kolejności data jest mdy.

Kolejność daty można zmienić, używając instrukcji SET DATEFORMAT.Ustawienie instrukcji SET DATEFORMAT określa sposób interpretacji wartości daty.Jeśli kolejność nie będzie zgodna z ustawieniem, wartości nie będą interpretowane jako daty, ponieważ będą znajdować się poza zakresem lub będą nieprawidłowo interpretowane.Na przykład ciąg 12/10/08 może być interpretowany jako jedna z sześciu dat, w zależności od ustawienia DATEFORMAT.Czterocyfrowy rok będzie interpretowany jako rok.

czas Formaty

SQL Server rozpoznaje następujące formaty dla danych czas.Należy umieścić każdy format w pojedynczy cudzysłów (').

  • 14:30

  • 14:30[:20:999]

  • 14:30[:20.9]

  • 04:00:00 AM

  • 16:00:00 AM

  • UŻYTKOWNIK 4 [0] [:30:20:500]

Poniższe instrukcje przedstawiają zwrotu wartości różnych danych wejściowych funkcja CAST.

Można określić sufiks AM lub PM wskazująca, czy wartość czas jest przed lub po 12 w południe.Wielkość symbolu AM lub PM jest ignorowana.

Godziny można określać przy użyciu obu zegara 12-godzinnym lub 24-godzinnym.Wartości godziny są interpretowane w następujący sposób.

  • Wartość godziny 00 reprezentuje godzinę od północy (AM), niezależnie od tego, czy należy określić AM.Nie można określić, kiedy godzinę jest równa 00 PM.

  • Godziny od 01 do 11 reprezentują godzin przedpołudniowych, jeśli określono ani AM lub PM.One również reprezentować godzin przedpołudniowych, gdy AM została określona.Stanowią one godzin popołudniowych, gdy określono PM.

  • Wartość godziny równa 12 przedstawia godzinę rozpoczynającą się w południe (jeśli nie określono znacznika AM lub PM).Jeśli określono znacznik AM, ta wartość przedstawia godzinę rozpoczynającą się o północy.Jeśli określono znacznik PM, ta wartość przedstawia godzinę rozpoczynającą się w południe.Na przykład godzina 12:01 wypada 1 minutę po południu, czyli odpowiada godzinie 12:01 PM, podczas gdy godzina 12:01 AM wypada 1 minutę po północy.Określenie godziny 12:01 AM ma taki sam efekt jak określenie godziny 00:01 lub 00:01 AM.

  • Wartości godziny od 13 do 23 reprezentuje godzin popołudniowych, jeśli nie zostanie określona AM lub PM.Stanowią one również godzin popołudniowych, gdy określono PM.Nie można określić AM od 13 do 23, gdy jest wartość godziny.

  • Wartość 24 godziny jest nieprawidłowy; Użyj 12: 00 AM lub 00: 00 do reprezentowania północy.

Milisekundy może być poprzedzona odpowiadającą jej albo dwukropek (:) lub znak kropki (.).Jeśli jest poprzedzony dwukropkiem, numer oznacza, że thousandths z drugiego.Jeśli jest poprzedzony przez 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 sekundy dwudziestu i jedno - thousandth ostatnie 12: 30; 12:30:20.1 wskazuje sekundy dwudziestu i jedna dziesiąta ostatnie 12: 30.

Format data i czas ODBC

Interfejs API ODBC definiuje sekwencje znaków kontrolnych w celu przedstawiania wartości daty i godziny, dla których interfejs ODBC wywołuje dane sygnatury czasowej.Ten format sygnatury czasowej ODBC jest także obsługiwany przez definicję języka OLE DB (DBGUID-SQL) oraz dostawcę Microsoft OLE DB dla programu SQL Server.Aplikacje używające interfejsów API opartych na obiektach ADO oraz technologiach OLE DB i ODBC mogą używać tego formatu sygnatur czasowych ODBC w celu przestawiania dat i godzin.

SQL Server ODBC, dane są zawsze traktowane jako datetime Typ danych.

Sekwencje unikowe ODBC sygnatury czasowej są w formacie:

{ literal_type 'constant_value' }

  • literal_type
    Określa typ sekwencji unikowej.Poniżej znajdują się nieprawidłowe argumenty dla literal_type.

    d = data only

    t = czas only

    ts = sygnatura czasowa (godzina + data)

  • 'constant_value'
    Is the value of the escape sequence.constant_value must follow these formats for each literal_type.

    literal_type

    constant_value format

    d

    RRRR MM-DD

    t

    hh:mm:ss[.fff]

    ts

    RRRR MM-DDhh:mm:ss[.fff]

TExamples ODBC czas i daty są następujące:

  • U.

  • Za pomocą OPTION i wskazówki GROUP

  • { t '13:33:41' }

Do not confuse the ODBC and OLE DB timestamp data type name with the Transact-SQLtimestamp data type name.Typ danych sygnatury czasowej ODBC i OLE DB, rekordy daty i godziny.The Transact-SQLtimestamp data type is a binary data type that has no time-related values.

Konwertowanie data, czas, dateczas2 i dateczasoffset

Istnieją dwa rodzaje konwersje między typami innej data: jawne a niejawnych. Niejawna konwersja wystąpić bez korzystania z funkcji CAST lub CONVERT.Jawne konwersje wymagane funkcje CAST lub CONVERT.

Konwersja pomiędzy literały ciągów i czas(n), data, datetime2(n) i datetimeoffset(n)

Podczas konwersji z literały ciągów znaków do typów data i godziny są dozwolone, jeśli wszystkie części ciągi są prawidłowe formaty.W przeciwnym razie powstaje błąd wykonania.

Niejawne konwersje lub jawne konwersje, które nie mają określonego stylu od data i czas będzie typów literały ciągów znaków w domyślnym formacie bieżącej sesja.

Dla niejawna konwersja z datą czas, typy danych dateczas2 i dateczasoffset ciągów znaków, standardowy format SQL hh:mi:ss. YYY-MM-DD [nnnnnnn] CONVERT stylu 121, zostaną zastosowane.CONVERT styl 0 formatu, mon dd rrrr hh:miAM (lub PM), jest stosowana dla danych typu Data/Godzina i smalldatetime.

W poniższej tabela przedstawiono zasady konwersji date, time, datetime2 i datetimeoffset typy i ciąg literałów.

Literał ciąg wejściowego

date

time(n)

datetime2(n)

datetimeoffset(n)

DATA ODBC

Patrz Uwaga 1.

Patrz Uwaga 1.

Patrz Uwaga 1.

Patrz Uwaga 1.

CZAS ODBC

Patrz Uwaga 1.

Patrz Uwaga 1.

Patrz Uwaga 1.

Patrz Uwaga 1.

DATA/GODZINA ODBC

Patrz Uwaga 1.

Patrz Uwaga 1.

Patrz Uwaga 1.

Patrz Uwaga 1.

Tylko data

Trivial

Wartości domyślne są dostarczane.

Domyślnie część czas 00: 00: 00.

Domyślnie część czas 00: 00: 00.Domyślnie jest TIMEZONE + 00: 00.

Tylko czas

Wartości domyślne są dostarczane.

Trivial

Domyślnie część data 1900-1-1.

Domyślnie część data 1900-1-1.Domyślnie TIMEZONE + 00: 00.

Tylko TIMEZONE

Wartości domyślne są dostarczane.

Wartości domyślne są dostarczane.

Wartości domyślne są dostarczane.

Wartości domyślne są dostarczane.

DATA + CZAS

Używana jest data część ciąg wejściowego.

Używany jest czas część ciąg wejściowego.

Trivial

Domyślnie jest TIMEZONE + 00: 00.

DATA + TIMEZONE

Niedozwolone

Niedozwolone

Niedozwolone

Niedozwolone

CZAS + TIMEZONE

Wartości domyślne są dostarczane.

Używany jest czas część ciąg wejściowego.

Domyślnie część data 1900-1-1.Dane wejściowe TIMEZONE jest ignorowana.

Domyślnie część data 1900-1-1.

DATA + czas + czas STREFY

Zostanie użyta data częścią lokalnego DATETIME.

Użyte części czas lokalny DATETIME.

Zostanie użyty lokalny DATETIME.

Trivial

Uwagi do konwersji

  1. Literały ciągów znaków ODBC są mapowane na datetime Typ danych. Każde działanie przypisania z literały ODBC DATETIME do date, time, datetime2, lub datetimeoffsetypy t spowoduje, że niejawna konwersja między datetime i te typy zdefiniowane przez reguły konwersji.

  2. Dokładność ułamków sekund datetime ma dokładnością do jednego setnych trzy sekundy (odpowiednik 3.33 milisekund lub 0.00333 sekund). Wartości są zaokrąglane do wielokrotności.000,.003 lub.007 sekund. '08/22/1995 10:15:19:999 "jest zaokrąglana ponieważ'. 999 ' przekracza dokładność.

  3. Dla time(3), datetime2(3) lub datetimeoffset(3), dokładnością do jednej milisekundy ma dokładność ułamków sekund. Dlatego "1995 - 8 - 22 10:15:19:999" nie zostanie zaokrąglona.

  4. Dane wejściowe TIMEZONE przesunięcie strony powinny być zawsze być podwójny cyfr hh i mm.Znak, albo + lub –, jest obowiązkowe.

Konwersja pomiędzy typy danych czas i Data

W tabelach w tej sekcji opisano sposób każdy następujący dzień i czas typy danych są konwertowane na inną datę i czas typów danych:

  • date

  • time(n)

  • datetime

  • smalldatetime

  • datetimeoffset(n)

  • datetime2

Data, typ danych

W poniższej tabela opisano zdarzenia występujące, gdy date Typ danych jest konwertowana na inną datę i czas typów danych.

Typ danych do konwersji na

Szczegóły konwersji

time(n)

Konwersja nie powiedzie się i powstaje 206 komunikat o błędzie: "Operandu typu clash: Data jest zgodna z czas".

datetime

Data jest kopiowana.W poniższym kodzie pokazano wyniki konwersji date wartość do datetime wartość.

DECLARE @date date
DECLARE @datetime datetime
SELECT @date = '12-10-25'
SELECT @datetime = @date
SELECT @date AS '@date', @datetime AS '@datetime'
--Result
--@date      @datetime
------------ -----------------------
--2025-12-10 2025-12-10 00:00:00.000
--
--(1 row(s) affected)

smalldatetime

Gdy date wartość z zakres od Smalldatetime, składnik data jest kopiowana i składnik godziny zestaw do 00:00:00.000.Gdy date wartość jest poza zakresem smalldatetime powstaje wartość 242 komunikat o błędzie: "Konwersja typu danych Data do typu danych smalldatetime spowodowało wartość limit czasu z zakres."; orazsmalldatetime wartość jest zestaw wartości null.

W poniższym kodzie pokazano wyniki konwersji date wartość do smalldatetime wartość.

DECLARE @date date
DECLARE @smalldatetime smalldatetime
SELECT @date = '1912-10-25'
SELECT @smalldatetime = @date
SELECT @date AS '@date', @smalldatetime AS '@smalldatetime'
--Result
--@date      @smalldatetime
------------ -----------------------
--1912-10-25 1912-10-25 00:00:00
--
--(1 row(s) affected)

datetimeoffset(n)

Data jest kopiowana, a czas jest zestaw 00:00.0000000 + 00: 00.

W poniższym kodzie pokazano wyniki konwersji date wartość do datetimeoffset(3) wartość.

DECLARE @date date
DECLARE @datetimeoffset datetimeoffset(3)
SELECT @date = '1912-10-25'
SELECT @datetimeoffset = @date
SELECT @date AS '@date', @datetimeoffset AS '@datetimeoffset'
--Result
--@date      @datetimeoffset
------------ ------------------------------
--1912-10-25 1912-10-25 00:00:00.000 +00:00
--
--(1 row(s) affected)

datetime2(n)

Składnik data jest kopiowana, a składnik czas jest zestaw do 00:00.000000.

W poniższym kodzie pokazano wyniki konwersji date wartość do datetime2(3) wartość.

DECLARE @date date
DECLARE @datetime2 datetime2(3)
SELECT @date = '1912-10-25'
SELECT @datetime2 = @date
SELECT @date AS '@date', @datetime2 AS '@datetime2(3)'
--Result
--@date      @datetime2(3)
------------ -----------------------
--1912-10-25 1912-10-25 00:00:00.000
--
--(1 row(s) affected)

czas(n) typ danych

W poniższej tabela opisano zdarzenia występujące, gdy time Typ danych jest konwertowana na inną datę i czas typów danych.

Typ danych do konwersji na

Szczegóły konwersji

time(n)

Zostaną skopiowane godzin, minut i sekund.Gdy dokładność obiekt obiekt docelowy jest mniejsza od precyzji urządzenie źródłowe, ułamków sekund zostanie obcięty do dokładności obiekt docelowy.

W poniższym przykładzie przedstawiono wyniki konwersji time(4) wartość do time(3) wartość.

DECLARE @timeTo time(3)
DECLARE @timeFrom time(4)
SELECT @timeFrom = '12:34:54.1234'
SELECT @timeTo = @TimeFrom
SELECT @timeTo AS 'time(3)', @timeFrom AS 'time(4)'
--Results
--time(3)      time(4)
-------------- -------------
--12:34:54.123 12:34:54.1234
--
--(1 row(s) affected)

date

Konwersja nie powiedzie się i powstaje 206 komunikat o błędzie: "Operandu typu clash: Data jest zgodna z czas".

datetime

Godziny, minuty i drugi wartości są kopiowane; i składnik data jest zestaw do „ 1900 - 01 - 01 '.Gdy dokładność ułamków sekund time(n) wartość jest większa niż trzy cyfry datetime wyniki zostaną obcięte.

W poniższym kodzie pokazano wyniki konwersji time(4) wartość do datetime wartość.

DECLARE @time time(4)
DECLARE @datetime datetime
SELECT @time = '12:15:04.1234'
SELECT @datetime = @time
SELECT @time AS '@time', @datetime AS '@datetime'
--Result
--@time         @datetime
--------------- -----------------------
--12:15:04.1234 1900-01-01 12:15:04.123
--
--(1 row(s) affected)

smalldatetime

Data jest zestaw do „ 1900 - 01 - 01 ' oraz godziny i minuty wartości są kopiowane.Sekund i ułamków sekund są zestaw na 0.

W poniższym kodzie pokazano wyniki konwersji time(4) wartość do smalldatetime wartość.

DECLARE @time time(4)
DECLARE @smalldatetime smalldatetime
SELECT @time = '12:15:04.1234'
SELECT @smalldatetime = @time
SELECT @time AS '@time', @smalldatetime AS '@smalldatetime'
--Result
--@time         @smalldatetime
--------------- -----------------------
--12:15:04.1234 1900-01-01 12:15:00
--
--(1 row(s) affected)

datetimeoffset(n)

Data jest zestaw do „ 1900 - 01 - 01 ' oraz czas jest kopiowany.Przesunięcie strefy jest ustawiony na czas + 00: 00.Gdy dokładność ułamków sekund time(n) wartość jest większa od precyzji datetimeoffset(n) wartość, wartość jest obcinana do dopasowanie.

W poniższym przykładzie przedstawiono wyniki konwersji time(4) wartość do datetimeoffset(3) Typ.

DECLARE @time time(4)
DECLARE @datetimeoffset datetimeoffset(3)
SELECT @time = '12:15:04.1234'
SELECT @datetimeoffset = @time
SELECT @time AS '@time', @datetimeoffset AS '@datetimeoffset'
--Result
--@time         @datetimeoffset
--------------- ------------------------------
--12:15:04.1234 1900-01-01 12:15:04.123 +00:00
--
--(1 row(s) affected)

datetime2(n)

Data jest zestaw do „ 1900 - 01 - 01 ', czas, składnik jest kopiowany i strefę czasową, wyłączanie zestaw jest zestaw do 00: 00.Gdy dokładność ułamków sekund datetime2(n) wartość jest większa niż time(n) wartość, wartość zostanie skrócona do dopasowanie.

W poniższym przykładzie przedstawiono wyniki konwersji time(4) wartość do datetime2(2) wartość.

DECLARE @time time(4)
DECLARE @datetime2 datetime2(3)
SELECT @time = '12:15:04.1234'
SELECT @datetime2 = @time
SELECT @datetime2 AS '@datetime2', @time AS '@time'
--Result
--@datetime2              @time
------------------------- -------------
--1900-01-01 12:15:04.123 12:15:04.1234
--
--(1 row(s) affected)

Typ danych Data/Godzina

W poniższej tabela opisano zdarzenia występujące, gdy datetime Typ danych jest konwertowana na inną datę i czas typów danych.

Typ danych do konwersji na

Szczegóły konwersji

date

Rok, miesiąc i dzień są kopiowane.Składnik czas jest zestaw do 00:00:00.000.

W poniższym kodzie pokazano wyniki konwersji date wartość do datetime wartość.

DECLARE @date date
DECLARE @datetime datetime
SELECT @date = '12-21-05'
SELECT @datetime = @date
SELECT @datetime AS '@datetime', @date AS '@date'
--Result
--@datetime               @date
------------------------- ----------
--2005-12-21 00:00:00.000 2005-12-21

time(n)

Składnik czas jest kopiowana, a składnik data jest zestaw do „ 1900 - 01 - 01 '.Gdy dokładność ułamkowa time(n) wartość większa niż trzy cyfry, wartość zostanie skrócona do dopasowanie.

W poniższym przykładzie przedstawiono wyniki konwersji time(4) wartość do datetime wartość.

DECLARE @time time(4)
DECLARE @datetime datetime
SELECT @time = '12:10:05.1234'
SELECT @datetime = @time
SELECT @datetime AS '@datetime', @time AS '@time'
--Result
--@datetime               @time
------------------------- -------------
--1900-01-01 12:10:05.123 12:10:05.1234
--
--(1 row(s) affected)

smalldatetime

Kopiowane są godziny i minuty.Sekund i ułamków sekund są zestaw na 0.

W poniższym kodzie pokazano wyniki konwersji smalldatetime wartość do datetime wartość.

DECLARE @smalldatetime smalldatetime
DECLARE @datetime datetime
SELECT @smalldatetime = '12-01-01 12:32'
SELECT @datetime = @smalldatetime
SELECT @datetime AS '@datetime', @smalldatetime AS '@smalldatetime'
--Result
--@datetime               @smalldatetime
------------------------- -----------------------
--2001-12-01 12:32:00.000 2001-12-01 12:32:00
--
--(1 row(s) affected)

datetimeoffset(n)

Data i czas składników zostaną skopiowane.czas Strefy zostanie obcięta do liczby całkowitej.Gdy dokładność ułamkowa datetimeoffset(n) wartość jest większa niż trzy cyfry, wartość zostanie obcięty.

W poniższym przykładzie przedstawiono wyniki konwersji datetimeoffset(4) wartość do datetime wartość.

DECLARE @datetimeoffset datetimeoffset(4)
DECLARE @datetime datetime
SELECT @datetimeoffset = '1968-10-23 12:45:37.1234 +10:0'
SELECT @datetime = @datetimeoffset
SELECT @datetime AS '@datetime', @datetimeoffset AS '@datetimeoffset'
--Result
--@datetime               @datetimeoffset
------------------------- ------------------------------
--1968-10-23 12:45:37.123 1968-10-23 12:45:37.1234 +01:0
--
--(1 row(s) affected)

datetime2(n)

Data i czas są kopiowane.Gdy dokładność ułamkowa datetime2(n) wartość jest większa niż trzy cyfry, wartość zostanie obcięty.

W poniższym przykładzie przedstawiono wyniki konwersji datetime2(4) wartość do datetime wartość.

DECLARE @datetime2 datetime2(4)
DECLARE @datetime datetime
SELECT @datetime2 = '1968-10-23 12:45:37.1237'
SELECT @datetime = @datetime2
SELECT @datetime AS '@datetime', @datetime2 AS '@datetime2'
--Result
--@datetime               @datetime2
------------------------- ------------------------
--1968-10-23 12:45:37.123 1968-10-23 12:45:37.1237
--
--(1 row(s) affected)

Smalldatetime, typ danych

W poniższej tabela opisano zdarzenia występujące, gdy smalldatetime Typ danych jest konwertowana na inną datę i czas typów danych.

Typ danych do konwersji na

Szczegóły konwersji

date

Rok, miesiąc i dzień są kopiowane.

W poniższym kodzie pokazano wyniki konwersji smalldatetime wartość do date wartość.

DECLARE @smalldatetime smalldatetime
DECLARE @date date
SELECT @smalldatetime = '1955-12-13 12:43:10'
SELECT @date = @smalldatetime
SELECT @smalldatetime AS '@smalldatetime', @date AS 'date'
--Result
--@smalldatetime          date
------------------------- ----------
--1955-12-13 12:43:00     1955-12-13
--
--(1 row(s) affected)

time(n)

Zostaną skopiowane godzin, minut i sekund.Ułamków sekund są zestaw na 0.

W poniższym kodzie pokazano wyniki konwersji smalldatetime wartość do time(4) wartość.

DECLARE @smalldatetime smalldatetime
DECLARE @time time(4)
SELECT @smalldatetime = '1955-12-13 12:43:10'
SELECT @time = @smalldatetime
SELECT @smalldatetime AS '@smalldatetime', @time AS 'time'
--Result
--@smalldatetime          time
------------------------- -------------
--1955-12-13 12:43:00     12:43:00.0000
--
--(1 row(s) affected)

datetime

The smalldatetime value is copied to the datetime value.Ułamków sekund są zestaw na 0.

W poniższym kodzie pokazano wyniki konwersji smalldatetime wartość do datetime wartość.

DECLARE @smalldatetime smalldatetime
DECLARE @datetime datetime
SELECT @smalldatetime = '1955-12-13 12:43:10'
SELECT @datetime = @smalldatetime
SELECT @smalldatetime AS '@smalldatetime', @datetime AS 'datetime'
--Result
--@smalldatetime          datetime
------------------------- -----------------------
--1955-12-13 12:43:00     1955-12-13 12:43:00.000
--
--(1 row(s) affected)

datetimeoffset(n)

The smalldatetime value is copied to the datetimeoffset(n) value.Ułamków sekund są ustawione na 0, a także czas przesunięcie strefy jest ustawiony do + 00: 0.

W poniższym kodzie pokazano wyniki konwersji smalldatetime wartość do datetimeoffset(4) wartość.

DECLARE @smalldatetime smalldatetime
DECLARE @datetimeoffset datetimeoffset(4)
SELECT @smalldatetime = '1955-12-13 12:43:10'
SELECT @datetimeoffset = @smalldatetime
SELECT @smalldatetime AS '@smalldatetime', @datetimeoffset AS 'datetimeoffset(4)'
--Result
--@smalldatetime          datetimeoffset(4)
------------------------- ------------------------------
--1955-12-13 12:43:00     1955-12-13 12:43:00.0000 +00:0
--
--(1 row(s) affected)

datetime2(n)

The smalldatetime value is copied to the datetime2(n) value.Ułamków sekund są zestaw na 0.

W poniższym kodzie pokazano wyniki konwersji smalldatetime wartość do datetime2(4) wartość.

DECLARE @smalldatetime smalldatetime
DECLARE @datetime2 datetime2(4)
SELECT @smalldatetime = '1955-12-13 12:43:10'
SELECT @datetime2 = @smalldatetime
SELECT @smalldatetime AS '@smalldatetime', @datetime2 AS ' datetime2(4)'
--Result
--@smalldatetime           datetime2(4)
------------------------- ------------------------
--1955-12-13 12:43:00     1955-12-13 12:43:00.0000
--
--(1 row(s) affected)

datetimeoffset(n) typ danych

W poniższej tabela opisano zdarzenia występujące, gdy datetimeoffset(n) Typ danych jest konwertowana na inną datę i czas typów danych.

Typ danych do konwersji na

Szczegóły konwersji

date

Rok, miesiąc i dzień są kopiowane.

W poniższym kodzie pokazano wyniki konwersji datetimeoffset(4) wartość do date wartość.

DECLARE @datetimeoffset datetimeoffset(4)
DECLARE @date date
SELECT @datetimeoffset = '12-10-25 12:32:10 +01:0'
SELECT @date = @datetimeoffset
SELECT @datetimeoffset AS '@datetimeoffset ', @date AS 'date'
--Result
--@datetimeoffset                date
-------------------------------- ----------
--2025-12-10 12:32:10.0000 +01:0 2025-12-10
--
--(1 row(s) affected)

time(n)

Godzina, minuta, po drugie i ułamków sekund są kopiowane.czas Strefy, wartość zostanie obcięta do liczby całkowitej.Gdy dokładność datetimeoffset(n) wartość jest większa od precyzji time(n) wartość, wartość zostanie obcięta do liczby całkowitej.

W poniższym kodzie pokazano wyniki konwersji datetimeoffset(4) wartość do time(3) wartość.

DECLARE @datetimeoffset datetimeoffset(4)
DECLARE @time time(3)
SELECT @datetimeoffset = '12-10-25 12:32:10.1234 +01:0'
SELECT @time = @datetimeoffset
SELECT @datetimeoffset AS '@datetimeoffset ', @time AS 'time'
--Result
--@datetimeoffset                time
-------------------------------- ------------
--2025-12-10 12:32:10.1234 +01:0 12:32:10.123
--
--(1 row(s) affected)

datetime

data i czas wartości są kopiowane, a także czas strefy zostanie obcięta do liczby całkowitej.Gdy dokładność ułamkowa datetimeoffset(n) wartość jest większa niż trzy cyfry, wartość zostanie obcięta do liczby całkowitej.

W poniższym kodzie pokazano wyniki konwersji datetimeoffset(4) wartość do datetime wartość.

DECLARE @datetimeoffset datetimeoffset(4)
DECLARE @datetime datetime
SELECT @datetimeoffset = '12-10-25 12:32:10.1234 +01:0'
SELECT @datetime = @datetimeoffset
SELECT @datetimeoffset AS '@datetimeoffset ', @datetime AS 'datetime'
--Result
--@datetimeoffset                datetime
-------------------------------- -----------------------
--2025-12-10 12:32:10.1234 +01:0 2025-12-10 12:32:10.123
--
--(1 row(s) affected)

smalldatetime

Kopiowane są data, godziny i minuty.Są sekundy zestaw na 0.

W poniższym kodzie pokazano wyniki konwersji datetimeoffset(3) wartość do smalldatetime wartość.

DECLARE @datetimeoffset datetimeoffset(3)
DECLARE @smalldatetime smalldatetime
SELECT @datetimeoffset = '1912-10-25 12:24:32 +10:0'
SELECT @smalldatetime = @datetimeoffset
SELECT @datetimeoffset AS '@datetimeoffset', @smalldatetime AS '@smalldatetime'
--Result
--@datetimeoffset                @smalldatetime
-------------------------------- -----------------------
--1912-10-25 12:24:32.000 +10:00 1912-10-25 12:25:00
--
--(1 row(s) affected)

datetime2(n)

Data i czas są kopiowane do datetime2 wartość, a także czas strefy zostanie obcięta do liczby całkowitej. Gdy dokładność datetime2(n) wartość jest większa od precyzji datetimeoffset(n) wartość, ułamków sekund są zaokrąglane do dopasowanie.

Postępuj zgodnie z kodu pokazuje wyniki konwersji datetimeoffset(4) wartość do datetime2(3) wartość.

DECLARE @datetimeoffset datetimeoffset(4)
DECLARE @datetime2 datetime2(3)
SELECT @datetimeoffset = '1912-10-25 12:24:32.1234 +10:0'
SELECT @datetime2 = @datetimeoffset
SELECT @datetimeoffset AS '@datetimeoffset', @datetime2 AS '@datetime2'
--Result
--@datetimeoffset                @datetime2
-------------------------------- -----------------------
--1912-10-25 12:24:32.1234 +10:0 1912-10-25 12:24:32.123
--
--(1 row(s) affected)

Typ danych datetime2

W poniższej tabela opisano zdarzenia występujące, gdy datetime2 Typ danych jest konwertowana na inną datę i czas typów danych.

Typ danych do konwersji na

Szczegóły konwersji

date

Rok, miesiąc i dzień są kopiowane.

W poniższym kodzie pokazano wyniki konwersji datetime2(4) wartość do date wartość.

DECLARE @datetime2 datetime2(4)
DECLARE @date date
SELECT @datetime2 = '12-10-25 12:32:10.1234'
SELECT @date = @datetime2
SELECT @datetime2 AS '@datetime2', @date AS 'date'
--Result
--@datetime2               date
-------------------------- ----------
--2025-12-10 12:32:10.1234 2025-12-10
--
--(1 row(s) affected)

time(n)

Godzina, minuta, po drugie i ułamków sekund są kopiowane.

W poniższym kodzie pokazano wyniki konwersji datetime2(4) wartość do time(3) wartość.

DECLARE @datetime2 datetime2(4)
DECLARE @time time(3)
SELECT @datetime2 = '12-10-25 12:32:10.1234'
SELECT @time = @datetime2
SELECT @datetime2 AS '@datetime2', @time AS 'time(3)'
--Result
--@datetime2                time(3) 
-------------------------- ------------
--2025-12-10 12:32:10.1234 12:32:10.123
--
--(1 row(s) affected)

datetime

Data i czas wartości zostaną skopiowane.Gdy dokładność ułamkowa datetimeoffset(n) wartość jest większa niż trzy cyfry, wartość zostanie obcięta do liczby całkowitej.

W poniższym kodzie pokazano wyniki konwersji datetime2 wartość do datetime wartość.

DECLARE @datetime2 datetime2
DECLARE @datetime datetime
SELECT @datetime2 = '12-10-25 12:32:10.1234567'
SELECT @datetime = @datetime2
SELECT @datetime2 AS '@datetime2', @datetime AS '@datetime'
--Result
--@datetime2                  @datetime
----------------------------- -----------------------
--2025-12-10 12:32:10.1234567 2025-12-10 12:32:10.123
--
--(1 row(s) affected)

smalldatetime

Kopiowane są data, godziny i minuty.Są sekundy zestaw na 0.

W poniższym kodzie pokazano wyniki konwersji datetime2 wartość do smalldatetime wartość.

DECLARE @datetime2 datetime2
DECLARE @smalldatetime smalldatetime
SELECT @datetime2 = '12-10-25 12:32:10.1234567'
SELECT @smalldatetime = @datetime2
SELECT @datetime2 AS '@datetime2', @smalldatetime AS '@smalldatetime'
--Result
--@datetime2                  @datetime
----------------------------- -----------------------
--2025-12-10 12:32:10.1234567 2025-12-10 12:32:10.123
--
--(1 row(s) affected)

datetimeoffset(n)

The datetime2(n) value is copied to the datetimeoffset(n) value.czas Przesunięcie strefy jest ustawiony do + 00: 0.Gdy dokładność datetime2(n) wartość jest większa od precyzji datetimeoffset(n) wartość, wartość jest obcinana do dopasowanie.

W poniższym kodzie pokazano wyniki konwersji datetime2(5) wartość do datetimeoffset(3) wartość.

DECLARE @datetime2 datetime2(3)
DECLARE @datetimeoffset datetimeoffset(2)
SELECT @datetime2 = '12-10-25 12:32:10.1234567'
SELECT @datetimeoffset = @datetime2
SELECT @datetime2 AS '@datetime2', @datetimeoffset AS '@datetimeoffset(2)'
--Result
--@datetime2              @datetimeoffset(2)
------------------------- -----------------------------
--2025-12-10 12:32:10.123 2025-12-10 12:32:10.12 +00:00
--
--(1 row(s) affected)

Za pomocą CAST i CONVERT czas, data, datetime2 i datetimeoffset

Ta sekcja zawiera informacje o konwersji między datą i czas typów danych.

Konwersja na datetimeoffset

  • Za każdym razem, gdy datetimeoffset wartość o strefie czasowej jest niejawnie pochodzących z wartości bez strefy czasowej (na przykład w operacji przypisanie proste), wartość bez strefy czasowej jest traktowane jako lokalne i bieżącego przesunięcie strefy czasowej (00: 00) domyślny jest odejmowany od go do czas UTC.
  1. Strefa czasowa UTC (00: 00) zawsze są dołączane podczas konwersji typów danych strefy non–czas do datetimeoffset Aby konwersje następujących czynności:
  • date Aby datetimeoffset

  • time Aby datetimeoffset

  • datetime2 Aby datetimeoffset

  • datetime lub smalldatetime Aby datetimeoffset

  • Literały ciągów znaków w prawidłowym date, time, lub datetime bez czas formatów do strefy datetimeoffset

Konwersja z datetimeoffset

Podczas konwersji z datetimeoffset następujące typy stref non–czas stylu 0 (domyślnie) zawsze wskazuje, że zwrot date, time, datetime2, datetime, lub smalltime wartość jest w formacie lokalne przesunięcie strefy czasowej konserwowane; i styl 1 zawsze wskazuje UTC format.

Za każdym razem, gdy wartość data lub godziny, bez niejawnie pochodzi strefy czasowej w jednym z następujących konwersje, datetimeoffset wartość jest traktowana jako czas UTC. Przesunięcie strefy czasowej konserwowane jest dodawana do wartości do czas lokalnego.Wynik, bez żadnych przesunięcie strefy czasowej jest czas lokalny.

  • datetimeoffset Aby date

  • datetimeoffset Aby time

  • datetimeoffset Aby datetime2

  • datetimeoffset Aby datetime lub smalldatetime

  • Nie można używać stylów 0 i 1 datetimeoffset do konwersji ciągów. Zamiast tego należy najpierw przekonwertować z datetimeoffset Aby datetime2 lub datetime, a następnieAby varchar lub char.

Jeśli istniejące CONVERT styl zawiera część czas i konwersja jest z datetimeoffset ciąg znaków, strefy czasowej przesunięcie (z wyjątkiem dla stylu 127) jest włączone. Jeśli nie chcesz, aby przesunięcie strefy czasowej, LANE do datetime2 pierwszy i następnie do ciąg.

Wszystkie istniejące data i czas style, które będą stosowane do żadnego datetimeoffset Aby ciąg konwersji i przesunięcie strefy czasowej zostanie zachowana.

Ciąg wejściowy czas części przesunięcie strefy powinny być zawsze podwójne cyfr dla obu hh mm i znaku, albo + lub – jest obowiązkowe.

Informacje o opuszczonych w konwersji

  • Podczas konwersji z datetime2 lub datetimeoffset Aby date, nie jest, bez zaokrąglania, a część data jest wyodrębniana jawnie. Dla datetimeoffset, wyodrębniania odbywa się na lokalnym data i czas, ale nie znasz wartości czas UTC.

  • Dla niejawna konwersja datetimeoffset Aby date, time, datetime2, datetime, lub smalldatetime, konwersja jest oparty na lokalną data i czas wartość (aby persistent czas przesunięcie strefy). Na przykład, jeśli datetimeoffset(3), wartość 2006-10-21 12:20:20.999-8: 00, jest konwertowany na time(3), wynik jest 12:20:20.999 nie 20:20:20.999(UTC).

Obcięcie w konwersji

  • Podczas konwersji z wartości większej dokładności czas do wartości niższej precyzji są dozwolone.Wartości większej dokładności zostanie obcięty do niższej typ precyzji.

Konwersja sekundy ułamkowe

Jeśli styl zawiera hh:mm:ss.mmm formatu czas, w formacie staną się hh:mm:ss. [nnnnnnn] dla time(n), datetime2(n) i datetimeoffset(n). Liczba cyfr zależy od specyfikacji typu.Tylko milisekundy dokładności, należy przekonwertować na datetime2(3) pierwszy, a następnie na ciąg.

W przypadku stylów 9, 109, 13, 113, 21, 121, 130 i 131, dwukropek (:) ułamków sekund poprzedni separator nie jest obsługiwana dla time, datetime2 i datetimeoffset typy konwersji ciąg. Format ciąg dane wyjściowe z dowolnym z tych stylów zostanie można przekształcić je kropki (.).

Styl argumentów funkcja CONVERT

W poniższej tabela przedstawiono przykłady date, time, datetime2, a datetimeoffset wartości stylu argumentów dla funkcja konwersji. Aby dowiedzieć się więcej na temat stylów zobacz sekcję "Argumenty" CAST and CONVERT (Transact-SQL)

Style

Associated standard

Input/Output (3)

format

date

time(n)

datetime2(n)

datetimeoffset(n)

0 or 100 (1,2)

Default

W bieżącej bazie danych muszą istnieć w tabela.

Sty12001

12: 20 PM

1 Stycznia 2001 12: 20 PM

1 Stycznia 2001 12: 20 PM-08: 00

101

USA

mm/dd/rrrr

01/01/2001

-

01/01/2001

01/01/2001

102

ANSI

yy.mm.dd

2001.01.01

-

2001.01.01

2001.01.01

103

Wielka Brytania/Francja

dd/mm/rr

01/01/2001

-

01/01/2001

01/01/2001

104

Niemiecki

dd.mm.yy

01.01.2001

-

01.01.2001

01.01.2001

105

Włoski

Obrazy i rysunki nie są indeksowane.

01-01-2001

-

01-01-2001

01-01-2001

106(1)

-

dd mon yy

01 Stycznia 2001 r.

-

01 Stycznia 2001 r.

01 Stycznia 2001 r.

107(1)

-

Mon dd, yy

01, 2001 R.

-

01, 2001 R.

01, 2001 R.

108

-

Ta akcja umożliwia kolumna dla indeksowania pełnotekstowego.

-

12:20:20

12:20:20

12:20:20

9 or 109 (1,2)

Wartość domyślna + milisekundy

mon dd yyyy hh:mi:ss:mmmAM (lub PM)

Sty12001

12:20:20.1234567 AM

1 Stycznia 2001 r. 12:20:20.1234567 PM

1 Stycznia 2001 r. 12:20:20:1230000 PM-08: 00

110

Stany Zjednoczone

To język dane przechowywane kolumna.

01-01-2001

-

01-01-2001

01-01-2001

111

Japonia

"Neutralna" należy używać, gdy kolumna zawiera dane w wielu językach lub w języku nieobsługiwanym.

2001/01/01

-

2001/01/01

2001/01/01

112

ISO

Wartością domyślną jest określany na podstawie opcji konfiguracja domyślnego pełnego tekstu języka.

20010101

-

20010101

20010101

13 or 113 (1,2)

Europejska wartość domyślna + milisekundy

dd mon yyyy hh:mi:ss:mmm(24h)

01 Stycznia 2001 r.

12:20:20.1234567

01 Stycznia 2001 r. 12:20:20.1234567

01 Stycznia 2001 r. 12:20:20:1230000-08: 00

114

-

hh:mi:ss:mmm(24h)

-

12:20:20.1234567

12:20:20.1234567

12:20:20:1230000 -08:00

20 or 120 (2)

Forma kanoniczna ODBC

yyyy-mm-dd hh:mi:ss(24h)

2001-01-01

12:20:20

2001-01-01 12:20:20

2001-01-01 12:20:20 -08:00

21 or 121 (2)

Jeśli śledzenie zmian jest włączona i kolumny muszą być dodane lub usunięte z indeks pełnotekstowy, podczas gdy zachowywanie indeksu, w tabela powinny być dezaktywowany i wymagane kolumny powinny zostać dodane lub usunięte.

Te akcje zamrozić indeksu.

2001-01-01

12:20:20.1234567

2001-01-01 12:20:20.1234567

2001-01-01 12:20:20.1230000 -08:00

126 (4)

W tabela można uaktywnić później, podczas uruchamiania zapełnianie jest praktyczne.

yyyy-mm-ddThh:mi:ss.mmm (bez spacji)

2001-01-01

12:20:20.1234567

2001-01-01T 12:20:20.1234567

2001-01-01T 12:20:20.1234567

127(6, 7)

ISO8601 ze strefą czasową Z.

yyyy-mm-ddThh:mi:ss.mmmZ

(bez spacji)

2001-01-01

12:20:20.1234567Z

2001-01-01T 12:20:20.1234567Z

2001 - 01 - 01T20:20:20.1230000Z

130 (1,2)

Hidżra)5)

dd mon yyyy hh:mi:ss:mmmAM

01 Stycznia 2001 r.

12:20:20.1230000 PM

01 Stycznia 2001 r. 12:20:20.1230000 PM

1 Stycznia 2001 r. 12:20:20:1230000 PM-08: 00

131 (2)

Hidżra)5)

Wszystkie kolumny wymienionych w klauzula funkcja jednej zapytanie pełnotekstowe muszą używać tej samej wersji językowej.

01/01/2001

12:20:20.1230000 PM

01/01/2001 12:20:20.1230000 PM

01/01/2001 12:20:20.1230000 PM-08: 00

1 Te wartości stylów powodują zwrócenie niedeterministycznych wyników.Zawiera wszystkie style (yy) (bez stulecia) i podzbiór stylów (yyyy) (ze stuleciem).

2 The default values (style0 or 100, 9 or 109, 13 or 113, 20 or 120, and 21 or 121) always return the century (yyyy).

3 Dane wejściowe podczas konwersji na datetime; wyjścia podczas konwertowania danych znakowych.

4 Przeznaczony do użytku XML.Do konwersji z datetime lub smalldatetime do danych znakowych format wyjściowy to zgodnie z opisem w poprzedniej tabela.

5 Hijri is a calendar system with several variations.SQL Server uses the Kuwaiti algorithm.

6 Obsługiwane tylko wtedy, gdy rzutowanie z danych znakowych na datetime lub smalldatetime. Gdy dane znakowe, które reprezentuje tylko data lub tylko raz składników jest rzutować na datetime lub smalldatetime typy danych, składnik czas nieokreślony ustawiono 00:00:00.000 i składnik nieokreślony data jest ustawiony na 1900-01-01.

7The optional time zone indicator, Z, is used to make it easier to map XML datetime values that have time zone information to SQL Serverdatetime values that have no time zone.sys.dm_exec_xml_handles (języka Transact-SQL)

SQL Server Data i godzina ograniczenia

Na poniższej liście Data i godzina odnoszą się do dowolnego typu danych Data / Godzina, który zawiera część daty lub godziny.

  • Nie są obsługiwane czas letniego (DST) po stronie serwera datetimeoffset.

  • Brak obsługi kalendarzu juliańskim data.

  • Brak obsługi czas reprezentacji ' 24 ' o północy.

  • Czas nie jest obsługa "przestępnych drugi" obsługuje ponad '59'.

  • Brak obsługi czas "nanosecond jednego" lub większy dla ułamków precyzji drugiego.

  • Brak obsługi strefę czasową na czas.

  • Brak obsługi operacji SQL standard INTERVAL.

Zgodność ze starszymi wersjami dla klientów niższych poziomów

Some niedziałający-poziom clients do not supportthe time, date, datetime2 and datetimeoffset data types added in SQL Server 2008. W poniższej tabela przedstawiono mapowanie typu między wystąpienie wyższego poziom SQL Server 2008 i klientów niskiego poziom.

Typ danych programu SQL Server 2008

Domyślny ciąg formatu literałowych przekazany do niedziałający-poziomie klient

niedziałający-poziom ODBC

niedziałający-poziom OLEDB

niedziałający-poziom JDBC

niedziałający-poziom SQLCLIENT

time

hh:mm:ss[.nnnnnnn]

SQL_WVARCHAR lub SQL_VARCHAR

DBTYPE_WSTRor DBTYPE_STR

Java.SQL.ciąg

Ciąg znaków lub SqString

date

RRRR MM-DD

SQL_WVARCHAR lub SQL_VARCHAR

DBTYPE_WSTRor DBTYPE_STR

Java.SQL.ciąg

Ciąg znaków lub SqString

datetime2

YYYY-MM-DD hh:mm:ss[.nnnnnnn]

SQL_WVARCHAR lub SQL_VARCHAR

DBTYPE_WSTRor DBTYPE_STR

Java.SQL.ciąg

Ciąg znaków lub SqString

datetimeoffset

YYYY-MM-DD hh:mm:ss[.nnnnnnn] [+|-]hh:mm

SQL_WVARCHAR lub SQL_VARCHAR

DBTYPE_WSTRor DBTYPE_STR

Java.SQL.ciąg

Ciąg znaków lub SqString

Przykłady

A.CONSTRAINT_TYPE

W poniższym przykładzie porównanie wyniki dla rzutowanie ciąg literału dla każdej daty i czas typu danych.Próby CAST literał z dokładnością ułamków sekund, która jest większa niż dozwolona dla ciąg znaków smalldatetime lub datetime podniesie błąd.

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(7)

2007-05-08 12:35:29.1234567

datetimeoffset(7)

2007-05-08 12:35:29.1234567 +12:15

B.Uzyskiwanie bieżącą data systemową i czas

W poniższym przykładzie przedstawiono sposób użycia SQL Server funkcje systemowe, która zwraca bieżącą data i czas.

C.Wyszukiwanie wszystkich wartości datetime2 w ciągu jednego dnia

  • W poniższym przykładzie pokazano sposób wyszukać wszystkie data i czas wartości w ciągu jednego dnia.

D.Wyszukiwanie okres czas, w ciągu jednego dnia

Następujące przykłady przedstawiają metody wyszukiwania dla dat, które mają wartości czas, aby znaleźć przedziału czas.

E.Korzystanie w parametrze DATEPART i DATEADD w celu znalezienia pierwszego i ostatniego dnia w parametrze datepart

W poniższym przykładzie pokazano, jak zwrócić pierwszy lub ostatni dzień z datepart.

F.Używając argumentów zdefiniowanych przez użytkownika w parametrze datepart DATEADD, tekst DATEDIFF, DATENAME i w parametrze DATEPART

Poniższy przykład tworzy wartość skalarna funkcja zdefiniowanej przez użytkownika, który dodaje stała do dowolnej części datetime2 wartość.

G.Używając w parametrze DATEPART do grupy według części data

W poniższym przykładzie użyto AdventureWorks Przykładowa baza danych. The DATEPART is used to group total sales by weekday, month, year, and year/month/weekday.

USE AdventureWorks
GO
SELECT SUM(TotalDue) AS 'Total Sales'
    ,DATEPART(year,OrderDate)AS 'By Year'
    ,DATEPART(month,OrderDate) AS 'By Month'
    ,DATEPART(weekday,OrderDate) AS 'By Weekday'
FROM Sales.SalesOrderHeader
WHERE YEAR(OrderDate) IN('2003','2004')
GROUP BY GROUPING SETS 
    (
    (DATEPART(year,OrderDate))
    ,(DATEPART(month,OrderDate))
    ,(DATEPART(weekday,OrderDate))
    ,(
        DATEPART(year,OrderDate)
        ,DATEPART(month,OrderDate),
        DATEPART(weekday,OrderDate))
    )
ORDER BY DATEPART(year,OrderDate)
    ,DATEPART(month,OrderDate)
    ,DATEPART(weekday,OrderDate)