- 22/07/2017
- 4 minutter at læse
-
- M
- j
- c
- M
- m
-
+4
Gælder for: SQL Server (alle understøttede versioner) Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Parallel Data Warehouse
Definerer en dato, der er kombineret med et tidspunkt på dagen. Tiden er baseret på en 24-timers dag, hvor sekunderne altid er nul (:00) og uden brøkdele af sekunder.
Note
Brug datatyperne time, date, datetime2 og datetimeoffset til nyt arbejde. Disse typer er i overensstemmelse med SQL-standarden. De er mere bærbare. time, datetime2 og datetimeoffset giver mere præcision i sekunder. datetimeoffset giver understøttelse af tidszoner til globalt udrulning af programmer.
smalldatetime description
Property | Value |
---|---|
Syntaks | smalldatetime |
Brug | DECLARE @MySmalldatetime smalldatetime CREATE TABLE Table1 Table1 ( Column1 smalldatetime ) |
Default string literal formats (bruges til ned-level client) |
Not applicable |
Datointerval | 1900-01-01-01 til 2079-06-06 1. januar, 1900 til og med den 6. juni 2079 |
Tidsinterval | 00:00:00 til 23:59:59 2007-05-09 23:59:59:59 afrundes til 2007-05-10 00:00:00:00 |
Elementområder | ÅÅÅÅÅÅ er fire cifre fra 1900 til 2079, som repræsenterer et år. MM er to cifre, fra 01 til 12, der repræsenterer en måned i det angivne år. DD er to cifre, fra 01 til 31 afhængigt af måneden, der repræsenterer en dag i den angivne måned. hh er to cifre, fra 00 til 23, der repræsenterer timen. mm er to cifre, fra 00 til 59, der repræsenterer minuttet. ss er to cifre, fra 00 til 59, der repræsenterer sekundet. Værdier, der er 29,998 sekunder eller mindre, afrundes ned til det nærmeste minut. Værdier på 29,999 sekunder eller mere afrundes opad til nærmeste minut. |
Karakterlængde | Maksimum 19 positioner |
Storage size | 4 bytes, fast. |
Nøjagtighed | Et minut |
Standardværdi | 1900-01-01-01 00:00:00:00 |
Kalender | Gregoriansk (Omfatter ikke det komplette årstal.) |
Bruger-defineret brøksekundernes præcision | Nej |
Viden om og bevarelse af tidszoneforskydning | Nej |
Vedkendt sommertid | Nej |
ANSI- og ISO 8601-overensstemmelse
smalldatetime er ikke ANSI- eller ISO 8601-kompatibel.
Konvertering af dato- og tidsdata
Når du konverterer til dato- og tidsdatatyper, afviser SQL Server alle værdier, som den ikke kan genkende som datoer eller tidspunkter. Du kan finde oplysninger om brug af CAST- og CONVERT-funktionerne med dato- og tidsdata under CAST og CONVERT (Transact-SQL).
Konvertering af smalldatetime til andre dato- og tidstyper
Dette afsnit beskriver, hvad der sker, når en smalldatetime-datatatype konverteres til andre dato- og tidsdatatyper.
For en konvertering til dato kopieres år, måned og dag. Den følgende kode viser resultaterne af konverteringen af en smalldatetime
-værdi til en date
-værdi.
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 er til time(n), kopieres timer, minutter og sekunder. Brøksekunderne sættes til 0. Den følgende kode viser resultaterne af konverteringen af en smalldatetime
-værdi til en time(4)
-værdi.
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 er til datetime, kopieres smalldatetime-værdien til datetime-værdien. Brøksekunderne sættes til 0. Følgende kode viser resultaterne af konverteringen af en smalldatetime
-værdi til en datetime
-værdi.
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)
Ved en konvertering til datetimeoffset(n) kopieres smalldatetime-værdien til datetimeoffset(n)-værdien. Brudsekunderne sættes til 0, og tidszoneforskydningen sættes til +00:0. Den følgende kode viser resultaterne af konverteringen af en smalldatetime
-værdi til en datetimeoffset(4)
-værdi.
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)
For konverteringen til datetime2(n) kopieres smalldatetime-værdien til datetime2(n)-værdien. Brøksekunderne sættes til 0. Den følgende kode viser resultaterne af konverteringen af en smalldatetime
-værdi til en datetime2(4)
-værdi.
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)
Eksempler
A. Casting af strengliteraler med sekunder til smalldatetime
Det følgende eksempel sammenligner konverteringen af sekunder i strengliteraler til 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. Sammenligning af datatyper for dato- og klokkeslæt
Det følgende eksempel sammenligner resultaterne af casting af en streng til hver datatype for dato- og klokkeslæt.
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';