smalldatetime (Transact-SQL)

  • 07/22/2017
  • 4 minuty na przeczytanie
    • M
    • j
    • .

    • c
    • M
    • m
    • +4

Dotyczy: SQL Server (wszystkie obsługiwane wersje) Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Parallel Data Warehouse

Definiuje datę, która jest połączona z czasem dnia. Czas jest oparty na 24-godzinnym dniu, z sekundami zawsze zerowymi (:00) i bez sekund ułamkowych.

Uwaga

Używaj typów danych time, date, datetime2 i datetimeoffset do nowych prac. Typy te są zgodne z normą SQL. Są one bardziej przenośne. time, datetime2 i datetimeoffset zapewniają większą precyzję sekundową. datetimeoffset zapewnia obsługę stref czasowych dla aplikacji rozmieszczonych globalnie.

Usage DECLARE @MySmalldatetime smalldatetime
CREATE TABLE Table1 ( Column1 smalldatetime ) Default string literal formats
(used for down-level client) Not applicable Date range 1900-01-01 through 2079-06-06
January 1, 1900, through 6 June 6, 2079 Time range 00:00:00 do 23:59:59
2007-05-09 23:59:59 zostanie zaokrąglone do
2007-05-10 00:00:00 Zakresy elementów RRRR to cztery cyfry, od 1900, do 2079, które reprezentują rok.
MM to dwie cyfry, z zakresu od 01 do 12, reprezentujące miesiąc w określonym roku.
DD to dwie cyfry, z zakresu od 01 do 31 w zależności od miesiąca, reprezentujące dzień określonego miesiąca.
hh to dwie cyfry, z zakresu od 00 do 23, reprezentujące godzinę.
mm to dwie cyfry, z zakresu od 00 do 59, reprezentujące minutę.
ss to dwie cyfry, z zakresu od 00 do 59, reprezentujące sekundę. Wartości, które wynoszą 29,998 sekundy lub mniej, są zaokrąglane w dół do najbliższej minuty. Wartości 29,999 sekund lub większe są zaokrąglane w górę do najbliższej minuty. Długość znaków 19 pozycji maksymalnie Rozmiar pamięci 4 bajty, stały. Dokładność Jedna minuta Domyślna wartość 1900-01-01 00:00:00 Kalendarz Gregoriański
(Nie obejmuje pełnego zakresu lat.) Dokładność ułamka sekundy zdefiniowana przez użytkownikazdefiniowana przez użytkownika precyzja ułamka sekundy Nie Uwaga na przesunięcie strefy czasowej i jej zachowanie Nie .

Daylight saving aware No

ANSI and ISO 8601 Compliance

smalldatetime isn’t ANSI or ISO 8601 compliant.

Konwersja danych daty i czasu

Gdy konwertujesz do typów danych daty i czasu, SQL Server odrzuca wszystkie wartości, których nie może rozpoznać jako daty lub czasu. Aby uzyskać informacje na temat używania funkcji CAST i CONVERT z danymi daty i czasu, zobacz CAST i CONVERT (Transact-SQL).

Konwersja smalldatetime do innych typów daty i czasu

Ta sekcja opisuje, co się dzieje, gdy typ danych smalldatetime jest konwertowany do innych typów danych daty i czasu.

W przypadku konwersji na datę, rok, miesiąc i dzień są kopiowane. Poniższy kod pokazuje wyniki konwersji wartości smalldatetime na wartość date.

DECLARE @smalldatetime smalldatetime = '1955-12-13 12:43:10'; DECLARE @date 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) 

Gdy konwersja jest na time(n), kopiowane są godziny, minuty i sekundy. Sekundy ułamkowe są ustawiane na 0. Poniższy kod pokazuje wyniki konwersji wartości smalldatetime na wartość time(4).

DECLARE @smalldatetime smalldatetime = '1955-12-13 12:43:10'; DECLARE @time time(4) = @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) 

Gdy konwersja jest na datetime, wartość smalldatetime jest kopiowana do wartości datetime. Sekundy ułamkowe są ustawione na 0. Poniższy kod pokazuje wyniki konwersji wartości smalldatetime na wartość datetime.

DECLARE @smalldatetime smalldatetime = '1955-12-13 12:43:10'; DECLARE @datetime 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) 

W przypadku konwersji na datetimeoffset(n), wartość smalldatetime jest kopiowana do wartości datetimeoffset(n). Sekundy ułamkowe są ustawione na 0, a przesunięcie strefy czasowej jest ustawione na +00:0. Poniższy kod pokazuje wyniki konwersji wartości smalldatetime na wartość datetimeoffset(4).

DECLARE @smalldatetime smalldatetime = '1955-12-13 12:43:10'; DECLARE @datetimeoffset datetimeoffset(4) = @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) 

W przypadku konwersji na datetime2(n), wartość smalldatetime jest kopiowana do wartości datetime2(n). Sekundy ułamkowe są ustawiane na 0. Poniższy kod pokazuje wyniki konwersji wartości smalldatetime na wartość datetime2(4).

DECLARE @smalldatetime smalldatetime = '1955-12-13 12:43:10'; DECLARE @datetime2 datetime2(4) = @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) 

Przykłady

A. Casting literałów łańcuchowych z sekundami do smalldatetime

Następujący przykład porównuje konwersję sekund w literałach łańcuchowych do wartości smalldatetime.

SELECT CAST('2007-05-08 12:35:29' AS smalldatetime) ,CAST('2007-05-08 12:35:30' AS smalldatetime) ,CAST('2007-05-08 12:59:59.998' AS smalldatetime); 
Wejście Wyjście
2007-05-08 12:35:29 2007-05-08 12:35:00
2007-05-08 12:35:30 2007-05-08 12:36:00
2007-05-08 12:59:59.998 2007-05-08 13:00:00

B. Porównywanie typów danych daty i czasu

Następujący przykład porównuje wyniki rzutowania ciągu znaków na każdy typ danych daty i czasu.

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

.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.