sql >> Database teknologi >  >> RDS >> Sqlserver

Konverter 'smalldatetime' til 'date' i SQL Server (T-SQL-eksempler)

Denne artikel indeholder eksempler på konvertering af en smalldatetime værdi til en dato værdi i SQL Server.

En af fordelene ved at konvertere en smalldatetime værdi til dato er, at du reducerer lagerstørrelsen ned fra 4 bytes til 3 bytes. Du mister dog tidskomponenten fra værdien, så du ville kun foretage denne konvertering, hvis du ikke har brug for tiden.

smalldatetime datatype både dato og klokkeslæt. Dens sekundkomponent er altid indstillet til nul (:00), og den har ingen brøksekunder. Dens nøjagtighed er til nærmeste minut. Dens lagerstørrelse er 4 bytes.

datoen datatype på den anden side, inkluderer kun datoen. Dens nøjagtighed er til nærmeste dag. Dens lagerstørrelse er 3 bytes.

Så for at være klar, når du konverterer en smalldatetime værdi til dato , året, måneden og dagen kopieres. Klokken er ikke kopieret.

Eksempel 1 – Implicit konvertering

Her er et eksempel på en implicit konvertering mellem smalldatetime og dato .

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 |
+---------------------+------------+

Dette er en implicit konvertering, fordi vi ikke bruger en konverteringsfunktion (som dem nedenfor) til eksplicit at konvertere den. I dette tilfælde udfører SQL Server en implicit konvertering bag kulisserne, når vi forsøger at tildele smalldatetime værdi til en dato variabel.

I dette eksempel kan vi se, at datodelen af ​​smalldatetime værdien kopieres til datoen værdi, og at tiden ikke kopieres.

Eksempel 2 – Eksplicit konvertering ved hjælp af CAST()

Her er et eksempel på en eksplicit konvertering. I dette tilfælde bruger jeg CAST() funktion direkte i SELECT sætning til eksplicit at konvertere mellem smalldatetime og dato .

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 |
+---------------------+------------+

Eksempel 3 – Eksplicit konvertering ved hjælp af CONVERT()

Her er et eksempel på en eksplicit konvertering ved hjælp af CONVERT() funktion i stedet for 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. Automatisk forøgelse af 'id'-værdi ved indsættelse i sqlite

  2. Operator findes ikke:heltal =? når du bruger Postgres

  3. Metadata vedrørende PL/SQL-posttyper på pakkeniveau

  4. DefType Statements i VBA:The Dark Side of Backward Compatibility