- 07/22/2017
- 4 minuter att läsa
-
- M
- j
- c
- M
- m
-
+4
Gäller: SQL Server (alla versioner som stöds) Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Parallel Data Warehouse
Definierar ett datum som kombineras med en tid på dagen. Tiden är baserad på en 24-timmarsdag, med sekunder alltid noll (:00) och utan bråksekunder.
Note
Använd datatyperna time, date, datetime2 och datetimeoffset för nytt arbete. Dessa typer överensstämmer med SQL-standarden. De är mer portabla. time, datetime2 och datetimeoffset ger mer sekundprecision. datetimeoffset ger stöd för tidszoner för globalt utplacerade program.
smalldatetime description
Property | Value |
---|---|
Syntax | smalldatetime |
Användning | DECLARE @MySmalldatetime smalldatetime CREATE TABLE Table Table1 ( Column1 smalldatetime ) |
Standardformat för stränglitteratur (används för ned-level client) |
Inte applicable |
Date range | 1900-01-01-01 till 2079-06-06 January 1, 1900 till och med den 6 juni 2079 |
Tidsintervall | 00:00:00 till 23:59:59 2007-05-09 23:59:59 avrundas till 2007-05-10 00:00:00:00 |
Elementområden | YYYYYYY är fyra siffror, från 1900 till 2079, som representerar ett år. MM är två siffror, från 01 till 12, som representerar en månad i det angivna året. DD är två siffror, från 01 till 31 beroende på månad, som representerar en dag i den angivna månaden. hh är två siffror, från 00 till 23, som representerar timmen. mm är två siffror, från 00 till 59, som representerar minuten. ss är två siffror, från 00 till 59, som representerar sekunden. Värden som är 29,998 sekunder eller mindre avrundas nedåt till närmaste minut. Värden på 29,999 sekunder eller mer avrundas uppåt till närmaste minut. |
Tecknens längd | 19 positioner högst |
Slagringsstorlek | 4 bytes, fast. |
Noggrannhet | En minut |
Standardvärde | 1900-01-01-01 00:00:00 |
Kalendarium | Gregoriansk (Inkluderar inte hela årtalsområdet.) |
Användare-användardefinierad bråksekunderprecision | Nej |
Medveten om och bevarande av tidszonförskjutning | Nej |
Medveten om sommartid | Nej |
ANSI- och ISO 8601-överensstämmelse
smalldatetime är inte ANSI- eller ISO 8601-kompatibelt.
Konvertering av datum- och tidsdata
När du konverterar till datatyper för datum och tid avvisar SQL Server alla värden som den inte kan känna igen som datum eller tid. Information om hur du använder funktionerna CAST och CONVERT med datum- och tidsdata finns i CAST och CONVERT (Transact-SQL).
Konvertering av smalldatetime till andra datum- och tidstyper
Det här avsnittet beskriver vad som händer när en smalldatetime-datatyp konverteras till andra datum- och tidsdatatyper.
För en konvertering till datum kopieras år, månad och dag. Följande kod visar resultatet av en konvertering av ett smalldatetime
-värde till ett date
-värde.
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)
När konverteringen sker till tid(n) kopieras timmar, minuter och sekunder. Bråksekunderna sätts till 0. Följande kod visar resultatet av konverteringen av ett smalldatetime
-värde till ett time(4)
-värde.
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)
När konverteringen är till datetime kopieras smalldatetime-värdet till datetime-värdet. Bråksekunderna sätts till 0. Följande kod visar resultatet av konverteringen av ett smalldatetime
-värde till ett datetime
-värde.
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)
För en konvertering till datetimeoffset(n) kopieras smalldatetime-värdet till datetimeoffset(n)-värdet. Bråksekunderna sätts till 0 och tidszonsförskjutningen sätts till +00:0. Följande kod visar resultatet av konverteringen av ett smalldatetime
-värde till ett datetimeoffset(4)
-värde.
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)
För konverteringen till datetime2(n) kopieras smalldatetime-värdet till datetime2(n)-värdet. Bråksekunderna sätts till 0. Följande kod visar resultatet av konverteringen av ett smalldatetime
-värde till ett datetime2(4)
-värde.
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)
Exempel
A. Casting av stränglitteraler med sekunder till smalldatetime
Följande exempel jämför konverteringen av sekunder i stränglitteraler till 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);
Input | Output |
---|---|
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. Jämförelse av datatyper för datum och tid
I följande exempel jämförs resultaten av att kasta en sträng till varje datatyp för datum och tid.
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';