sql >> Databasteknik >  >> RDS >> Sqlserver

Konvertera 'smalldatetime' till 'date' i SQL Server (T-SQL-exempel)

Den här artikeln innehåller exempel på hur du konverterar en smalldatetime värde till ett datum värde i SQL Server.

En av fördelarna med att konvertera en smalldatetime värde till datum är att du minskar lagringsstorleken från 4 byte till 3 byte. Du förlorar dock tidskomponenten från värdet, så du skulle bara göra den här konverteringen om du inte behöver tiden.

smalldatetime datatyp både datum och tid. Dess sekunders komponent är alltid inställd på noll (:00), och den har inga bråkdelar av sekunder. Dess noggrannhet är till närmaste minut. Dess lagringsstorlek är 4 byte.

datumet datatyp å andra sidan inkluderar endast datumet. Dess noggrannhet är till närmaste dag. Dess lagringsstorlek är 3 byte.

Så för att vara tydlig, när du konverterar en smalldatetime värde till datum , år, månad och dag kopieras. Tiden kopieras inte.

Exempel 1 – Implicit konvertering

Här är ett exempel på en implicit konvertering mellan smalldatetime och datum .

DECLARE 
  @thesmalldatetime smalldatetime,
  @thedate date;
SET @thesmalldatetime = '2025-05-21 10:15:30';
SET @thedate = @thesmalldatetime;
SELECT 
  @thesmalldatetime AS 'smalldatetime',
  @thedate AS 'thedate';

Resultat:

+---------------------+------------+
| smalldatetime       | thedate    |
|---------------------+------------|
| 2025-05-21 10:16:00 | 2025-05-21 |
+---------------------+------------+

Detta är en implicit konvertering eftersom vi inte använder en konverteringsfunktion (som de nedan) för att explicit konvertera den. I det här fallet utför SQL Server en implicit konvertering bakom kulisserna när vi försöker tilldela smalldatetime värde till ett datum variabel.

I det här exemplet kan vi se att datumdelen av smalldatetime värdet kopieras till datumet värde, och att tiden inte kopieras.

Exempel 2 – Explicit konvertering med CAST()

Här är ett exempel på en explicit konvertering. I det här fallet använder jag CAST() funktion direkt inom SELECT uttalande för att uttryckligen konvertera mellan smalldatetime och datum .

DECLARE @thesmalldatetime smalldatetime;
SET @thesmalldatetime = '2025-05-21 10:15:30';
SELECT 
  @thesmalldatetime AS 'thesmalldatetime',
  CAST(@thesmalldatetime AS date) AS 'date';

Resultat:

+---------------------+------------+
| thesmalldatetime    | date       |
|---------------------+------------|
| 2025-05-21 10:16:00 | 2025-05-21 |
+---------------------+------------+

Exempel 3 – Explicit konvertering med CONVERT()

Här är ett exempel på en explicit konvertering med CONVERT() funktion istället för CAST() .

DECLARE @thesmalldatetime smalldatetime;
SET @thesmalldatetime = '2025-05-21 10:15:30';
SELECT 
  @thesmalldatetime AS 'thesmalldatetime',
  CONVERT(date, @thesmalldatetime) AS 'date';

Resultat:

+---------------------+------------+
| thesmalldatetime    | date       |
|---------------------+------------|
| 2025-05-21 10:16:00 | 2025-05-21 |
+---------------------+------------+

  1. Hur man återställer MySQL root-lösenord

  2. Fråga med LEFT JOIN returnerar inte rader för antalet 0

  3. Hur man konverterar en sträng till hexadecimal i MySQL – HEX()

  4. Hur man får gårdagens datum i T-SQL