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

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

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

Den åbenlyse konsekvens af at konvertere en datotid værdi til dato er, at du mister tidsdelen. En fordel er dog, at du reducerer lagerstørrelsen fra 8 bytes ned til 3 bytes. Uanset hvad, vil du kun foretage denne konvertering, hvis du ikke har brug for tidsdelen.

datoen datatypen inkluderer dato og klokkeslæt med en 3-cifret brøksekunderdel. Dens nøjagtighed er afrundet til trin på 0,000, 0,003 eller 0,007 sekunder.

Dog datoen datatypen har en nøjagtighed på 1 dag (og den inkluderer ikke tiden, som nævnt).

Eksempel 1 – Implicit konvertering

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

DECLARE 
  @thedatetime datetime, 
  @thedate date;
SET @thedatetime = '2025-05-21 10:15:30.123';
SET @thedate = @thedatetime;
SELECT 
  @thedatetime AS 'datetime',
  @thedate AS 'date';

Resultat:

+-------------------------+------------+
| datetime                | date       |
|-------------------------+------------|
| 2025-05-21 10:15:30.123 | 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 datetime værdi til en dato variabel.

I dette eksempel kan vi se, at datoen værdien inkluderer kun datoen (uden tidskomponenten).

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 for eksplicit at konvertere mellem dato og klokkeslæt og dato .

DECLARE @thedatetime datetime;
SET @thedatetime = '2025-05-21 10:15:30.123';
SELECT 
  @thedatetime AS 'datetime',
  CAST(@thedatetime AS date) AS 'date';

Resultat:

+-------------------------+------------+
| datetime                | date       |
|-------------------------+------------|
| 2025-05-21 10:15:30.123 | 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 @thedatetime datetime;
SET @thedatetime = '2025-05-21 10:15:30.123';
SELECT 
  @thedatetime AS 'datetime',
  CONVERT(date, @thedatetime) AS 'date';

Resultat:

+-------------------------+------------+
| datetime                | date       |
|-------------------------+------------|
| 2025-05-21 10:15:30.123 | 2025-05-21 |
+-------------------------+------------+

  1. PostgreSQL-funktion til sidst indsatte ID

  2. Docker-container til Postgres 9.1 udsætter ikke port 5432 for værten

  3. Sådan vedhæfter du .db-fil med en anden .apk-android

  4. Sådan installeres phpMyAdmin på sin egen app