sql >> Database >  >> RDS >> Sqlserver

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

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

Een van de voordelen van het converteren van een smalldatetime waarde tot datum is dat u de opslaggrootte verkleint van 4 bytes naar 3 bytes. U verliest echter wel de tijdcomponent van de waarde, dus u zou deze conversie alleen doen als u de tijd niet nodig heeft.

De smalldatetime gegevenstype zowel de datum als de tijd. De secondencomponent is altijd ingesteld op nul (:00) en heeft geen fractionele seconden. De nauwkeurigheid is tot op de minuut nauwkeurig. De opslaggrootte is 4 bytes.

De datum gegevenstype daarentegen bevat alleen de datum. De nauwkeurigheid is op de dichtstbijzijnde dag. De opslaggrootte is 3 bytes.

Dus voor de duidelijkheid, wanneer u een smalldatetime . converteert waarde tot datum , worden het jaar, de maand en de dag gekopieerd. De tijd wordt niet gekopieerd.

Voorbeeld 1 – Impliciete conversie

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

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

Resultaat:

+---------------------+------------+
| smalldatetime       | thedate    |
|---------------------+------------|
| 2025-05-21 10:16:00 | 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 smalldatetime toe te wijzen waarde tot een datum variabel.

In dit voorbeeld kunnen we zien dat het datumgedeelte van de smalldatetime waarde wordt gekopieerd naar de datum waarde, en dat de tijd niet wordt gekopieerd.

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 smalldatetime en datum .

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

Resultaat:

+---------------------+------------+
| thesmalldatetime    | date       |
|---------------------+------------|
| 2025-05-21 10:16:00 | 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 @thesmalldatetime smalldatetime;
SET @thesmalldatetime = '2025-05-21 10:15:30';
SELECT 
  @thesmalldatetime AS 'thesmalldatetime',
  CONVERT(date, @thesmalldatetime) AS 'date';

Resultaat:

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

  1. Hoe krijg ik de huidige tijdzone van MySQL?

  2. Een datumbereik herhalen in PL/SQL

  3. SQL Server invoegen indien niet bestaat best practice

  4. Hoe een kolom wijzigen en de standaardwaarde wijzigen?