Dela via


smalldatetime (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalysplattformssystem (PDW)SQL-databas i Förhandsversion av Microsoft Fabric

Definierar ett datum som kombineras med en tid på dagen. Tiden baseras på en 24-timmars dag, med sekunder alltid noll (:00) och utan bråksekunder.

Note

Använd tid, datum, datetime2och datetimeoffset datatyper för nytt arbete. Dessa typer överensstämmer med SQL-standarden eftersom de är mer portabla. tid, datetime2 och datetimeoffset ge mer precision i sekunder. datetimeoffset ger tidszonsstöd för globalt distribuerade program.

smalldatetime description

Property Value
Syntax smalldatetime
Usage DECLARE @MySmallDateTime SMALLDATETIME;

CREATE TABLE Table1 (Column1 SMALLDATETIME);
Standardsträngliterala format
(används för klient på nednivå)
Not applicable
Date range 1900-01-01 genom 2079-06-06

1 januari 1900, till och med 6 juni 2079
Time range 00:00:00 genom 23:59:59

2024-05-09 23:59:59 avrundar till 2024-05-10 00:00:00
Element ranges yyyy är fyra siffror, från 1900 till 2079, vilket motsvarar ett år.

MM är två siffror, från 01 till 12, vilket representerar en månad under det angivna året.

dd är två siffror, från 01 till 31 beroende på månad, vilket representerar en dag i den angivna månaden.

HH är två siffror, från 00 till 23, vilket 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 den andra. Värden som är 29,998 sekunder eller mindre avrundas ned till närmaste minut. Värden på 29,999 sekunder eller mer avrundas upp till närmaste minut.
Character length Maximalt 19 positioner
Storage size 4 byte, fast
Accuracy One minute
Default value 1900-01-01 00:00:00
Calendar Gregorian

(Inkluderar inte hela intervallet med år.)
Användardefinierad bråkdels sekundprecision No
Tidszonsförskjutningsmedveten och bevarande No
sommartidsmedveten No

ANSI- och ISO 8601-efterlevnad

smalldatetime inte är ANSI- eller ISO 8601-kompatibel.

Konvertera datum- och tidsdata

När du konverterar till datum- och tidsdatatyper avvisar SQL Server alla värden som inte kan identifieras som datum eller tider. Information om hur du använder funktionerna CAST och CONVERT med datum- och tidsdata finns i CAST- och CONVERT-.

Konvertera smalldatetime till andra datum- och tidstyper

I det här avsnittet beskrivs vad som händer när en smalldatetime- datatyp konverteras till andra typer av datum- och tidsdata.

För en konvertering till datumkopieras året, månaden och dagen. Följande kod visar resultatet av konvertering av ett smalldatetime- värde till ett datum värde.

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

DECLARE @date AS DATE = @smalldatetime;

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

Här är resultatuppsättningen.

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

När konverteringen ska tid(n)kopieras timmar, minuter och sekunder. Bråksekunderna är inställda på 0. Följande kod visar resultatet av konvertering av ett smalldatetime- värde till ett tid(4) värde.

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

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

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

Här är resultatuppsättningen.

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

När konverteringen ska datetimekopieras värdet smalldatetime till värdet datetime. Bråksekunderna är inställda på 0. Följande kod visar resultatet av konvertering av ett smalldatetime--värde till ett datetime- värde.

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

DECLARE @datetime AS DATETIME = @smalldatetime;

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

Här är resultatuppsättningen.

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

För en konvertering till datetimeoffset(n)kopieras värdet smalldatetime till datetimeoffset(n) värde. Bråksekunderna är inställda på 0och tidszonsförskjutningen är inställd på +00:0. Följande kod visar resultatet av konvertering av ett smalldatetime- värde till ett datetimeoffset(4) värde.

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

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

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

Här är resultatuppsättningen.

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

För konverteringen till datetime2(n)kopieras värdet smalldatetime till värdet datetime2(n). Bråksekunderna är inställda på 0. Följande kod visar resultatet av konvertering av ett smalldatetime- värde till ett datetime2(4) värde.

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

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

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

Här är resultatuppsättningen.

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

Examples

A. Gjuta strängliteraler med sekunder till smalldatetime

I följande exempel jämförs konverteringen av sekunder i strängliteraler med 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);
Input Output
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. Jämföra datatyper för datum och tid

I följande exempel jämförs resultatet av gjutning av en sträng med varje datum- och tidsdatatyp.

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';
Data type Output
time 12:35:29.1234567
date 2024-05-08
smalldatetime 2024-05-08 12:35:00
datetime 2024-05-08 12:35:29.123
datetime2 2024-05-08 12:35:29.1234567
datetimeoffset 2024-05-08 12:35:29.1234567 +12:15