sql >> Database >  >> RDS >> Sqlserver

Converteer 'datetime' naar 'date' in SQL Server (T-SQL-voorbeelden)

Dit artikel bevat voorbeelden van het converteren van een datetime waarde tot een datum waarde in SQL Server.

Het voor de hand liggende gevolg van het converteren van een datetime waarde tot datum is dat u het tijdsgedeelte verliest. Een voordeel is echter dat u de opslaggrootte verkleint van 8 bytes tot 3 bytes. Hoe dan ook, je zou deze conversie alleen doen als je het tijdsgedeelte niet nodig hebt.

De datetime het gegevenstype omvat de datum en tijd, met een gedeelte van 3 cijfers in fracties van seconden. De nauwkeurigheid wordt afgerond op stappen van .000, .003 of .007 seconden.

Echter, de datum gegevenstype heeft een nauwkeurigheid van 1 dag (en omvat niet de tijd, zoals vermeld).

Voorbeeld 1 – Impliciete conversie

Hier is een voorbeeld van een impliciete conversie tussen datetime en datum .

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

Resultaat:

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

Dit is een impliciete conversie omdat we geen conversiefunctie (zoals hieronder) gebruiken om deze expliciet te converteren. In dit geval voert SQL Server achter de schermen een impliciete conversie uit wanneer we proberen de datetime toe te wijzen waarde tot een datum variabel.

In dit voorbeeld kunnen we zien dat de datum waarde bevat alleen de datum (zonder de tijdcomponent).

Voorbeeld 2 – Expliciete conversie met CAST()

Hier is een voorbeeld van een expliciete conversie. In dit geval gebruik ik de CAST() functie direct binnen de SELECT statement om expliciet te converteren tussen datetime en datum .

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

Resultaat:

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

Voorbeeld 3 – Expliciete conversie met CONVERT()

Hier is een voorbeeld van een expliciete conversie met de CONVERT() functie in plaats van CAST() .

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

Resultaat:

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

  1. Equivalent van Oracle's RowID in MySQL

  2. SAS JMP verbinden met Salesforce.com

  3. Zoek de dichtstbijzijnde breedtegraad/lengtegraad met een SQL-query

  4. Hoe bewaar je meerdere opties in één tabel?