Udostępnij za pośrednictwem


smalldatetime (Transact-SQL)

Dotyczy:sql ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Database w usłudze Microsoft Fabric

Definiuje datę połączoną z godziną dnia. Czas jest oparty na 24-godzinnym dniu, z sekundami zawsze zero (:00) i bez sekund ułamkowych.

Nuta

Użyj godziny, data, data/godzina2i typy danych datetimeoffset dla nowej pracy. Te typy są zgodne ze standardem SQL, ponieważ są bardziej przenośne. godziny datetime2 i datetimeoffset zapewniają większą precyzję sekund. datetimeoffset zapewnia obsługę stref czasowych dla aplikacji wdrożonych globalnie.

opis smalldatetime

Własność Wartość
składni smalldatetime
użycie DECLARE @MySmallDateTime SMALLDATETIME;

CREATE TABLE Table1 (Column1 SMALLDATETIME);
domyślne formaty literału ciągu
(używane w przypadku klienta na poziomie podrzędnym)
Nie dotyczy
zakres dat 1900-01-01 za pośrednictwem 2079-06-06

1 stycznia 1900 r. do 6 czerwca 2079 r.
zakres czasu 00:00:00 za pośrednictwem 23:59:59

2024-05-09 23:59:59 zaokrągla do 2024-05-10 00:00:00
zakresy elementów yyyy to cztery cyfry, począwszy od 1900 do 2079, która reprezentuje rok.

MM to dwie cyfry z zakresu od 01 do 12, która reprezentuje miesiąc w określonym roku.

dd to dwie cyfry, od 01 do 31 w zależności od miesiąca, który reprezentuje dzień określonego miesiąca.

HH to dwie cyfry z zakresu od 00 do 23, która reprezentuje godzinę.

mm to dwie cyfry, od 00 do 59, które reprezentują minutę.

ss to dwie cyfry z zakresu od 00 do 59, która reprezentuje drugą. Wartości o wartościach 29,998 sekund lub mniej są zaokrąglane w dół do najbliższej minuty. Wartości 29,999 sekund lub więcej są zaokrąglane do najbliższej minuty.
długość znaku Maksymalnie 19 pozycji
Rozmiar magazynu 4 bajty, stałe
dokładności Minuta
wartość domyślna 1900-01-01 00:00:00
kalendarz Gregoriański

(Nie obejmuje pełnego zakresu lat).
zdefiniowana przez użytkownika precyzja ułamkowa sekundy Nie
Rozpoznawanie i zachowywanie strefy czasowej Nie
z zapisywaniem światła dziennego Nie

Zgodność ze standardami ANSI i ISO 8601

smalldatetime nie jest zgodna ze standardem ANSI ani iso 8601.

Konwertowanie danych daty i godziny

Podczas konwertowania na typy danych daty i godziny program SQL Server odrzuca wszystkie wartości, których nie może rozpoznać jako daty ani godziny. Aby uzyskać informacje o korzystaniu z funkcji CAST i CONVERT z danymi daty i godziny, zobacz CAST i CONVERT.

Konwertowanie smalldatetime na inne typy dat i godzin

W tej sekcji opisano, co się dzieje, gdy typ danych smalldatetime jest konwertowany na inne typy danych daty i godziny.

W przypadku konwersji na datę , jest kopiowany rok, miesiąc i dzień. Poniższy kod przedstawia wyniki konwersji wartości smalldatetime na wartość daty .

DECLARE @smalldatetime AS SMALLDATETIME = '1955-12-13 12:43:10';

DECLARE @date AS DATE = @smalldatetime;

SELECT @smalldatetime AS '@smalldatetime',
       @date AS 'date';

Oto zestaw wyników.

@smalldatetime        date
--------------------- ----------
1955-12-13 12:43:00   1955-12-13

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

DECLARE @smalldatetime AS SMALLDATETIME = '1955-12-13 12:43:10';

DECLARE @time AS TIME (4) = @smalldatetime;

SELECT @smalldatetime AS '@smalldatetime',
       @time AS 'time';

Oto zestaw wyników.

@smalldatetime          time
----------------------- -------------
1955-12-13 12:43:00     12:43:00.0000

Gdy konwersja ma data/godzina, wartość smalldatetime jest kopiowana do wartości data/godzina. Sekundy ułamkowe są ustawione na wartość 0. Poniższy kod przedstawia wyniki konwertowania wartości smalldatetime na wartość data/godzina.

DECLARE @smalldatetime AS SMALLDATETIME = '1955-12-13 12:43:10';

DECLARE @datetime AS DATETIME = @smalldatetime;

SELECT @smalldatetime AS '@smalldatetime',
       @datetime AS 'datetime';

Oto zestaw wyników.

@smalldatetime          datetime
----------------------- -----------------------
1955-12-13 12:43:00     1955-12-13 12:43:00.000

W przypadku konwersji na datetimeoffset(n)wartość smalldatetime jest kopiowana do wartości datetimeoffset(n). W sekundach ułamkowych ustawiono wartość 0, a przesunięcie strefy czasowej ma wartość +00:0. Poniższy kod przedstawia wyniki konwertowania wartości smalldatetime na wartość datetimeoffset(4).

DECLARE @smalldatetime AS SMALLDATETIME = '1955-12-13 12:43:10';

DECLARE @datetimeoffset AS DATETIMEOFFSET (4) = @smalldatetime;

SELECT @smalldatetime AS '@smalldatetime',
       @datetimeoffset AS 'datetimeoffset(4)';

Oto zestaw wyników.

@smalldatetime        datetimeoffset(4)
--------------------- ------------------------------
1955-12-13 12:43:00   1955-12-13 12:43:00.0000 +00:0

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

DECLARE @smalldatetime AS SMALLDATETIME = '1955-12-13 12:43:10';

DECLARE @datetime2 AS DATETIME2 (4) = @smalldatetime;

SELECT @smalldatetime AS '@smalldatetime',
       @datetime2 AS ' datetime2(4)';

Oto zestaw wyników.

@smalldatetime        datetime2(4)
--------------------- ------------------------
1955-12-13 12:43:00   1955-12-13 12:43:00.0000

Przykłady

A. Rzutowanie literałów ciągu z sekundami na smalldatetime

Poniższy przykład porównuje konwersję sekund literałów ciągu na smalldatetime.

SELECT CAST ('2024-05-08 12:35:29' AS SMALLDATETIME),
       CAST ('2024-05-08 12:35:30' AS SMALLDATETIME),
       CAST ('2024-05-08 12:59:59.998' AS SMALLDATETIME);
Wkład Wyjście
2024-05-08 12:35:29 2024-05-08 12:35:00
2024-05-08 12:35:30 2024-05-08 12:36:00
2024-05-08 12:59:59.998 2024-05-08 13:00:00

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

Poniższy przykład porównuje wyniki rzutowania ciągu do każdego typu danych daty i godziny.

SELECT CAST ('2024-05-08 12:35:29.1234567 +12:15' AS TIME (7)) AS 'time',
       CAST ('2024-05-08 12:35:29.1234567 +12:15' AS DATE) AS 'date',
       CAST ('2024-05-08 12:35:29.123' AS SMALLDATETIME) AS 'smalldatetime',
       CAST ('2024-05-08 12:35:29.123' AS DATETIME) AS 'datetime',
       CAST ('2024-05-08 12:35:29.1234567 +12:15' AS DATETIME2 (7)) AS 'datetime2',
       CAST ('2024-05-08 12:35:29.1234567 +12:15' AS DATETIMEOFFSET (7)) AS 'datetimeoffset';
Typ danych Wyjście
czasu 12:35:29.1234567
daty 2024-05-08
smalldatetime 2024-05-08 12:35:00
data/godzina 2024-05-08 12:35:29.123
data/godzina2 2024-05-08 12:35:29.1234567
datetimeoffset 2024-05-08 12:35:29.1234567 +12:15