smalldatetime (Transact-SQL)

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

Lämna ett svar

Din e-postadress kommer inte publiceras.