smalldatetime (Transact-SQL)
Dotyczy:sql Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics 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
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 |