sql >> Databáze >  >> RDS >> Sqlserver

Převést „datetime“ na „date“ v SQL Server (příklady T-SQL)

Tento článek obsahuje příklady převodu datetime hodnotu k datu hodnotu v SQL Server.

Zřejmý důsledek převodu data a času hodnotu k datu je, že ztratíte část času. Jednou z výhod však je, že snížíte velikost úložiště z 8 bajtů na 3 bajty. V každém případě byste tuto konverzi provedli pouze v případě, že nepotřebujete časovou část.

datum a čas datový typ zahrnuje datum a čas s 3místnou částí ve zlomcích sekund. Jeho přesnost je zaokrouhlena na 0,000, 003 nebo 007 sekund.

Nicméně datum datový typ má přesnost 1 den (a nezahrnuje čas, jak bylo zmíněno).

Příklad 1 – Implicitní konverze

Zde je příklad implicitní konverze mezi datetime a 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';

Výsledek:

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

Jedná se o implicitní převod, protože k jeho explicitnímu převodu nepoužíváme konverzní funkci (jako jsou ty níže). V tomto případě SQL Server provede implicitní převod za scénou, když se pokusíme přiřadit datetime hodnotu k datu proměnná.

V tomto příkladu vidíme, že datum hodnota obsahuje pouze datum (bez časové složky).

Příklad 2 – Explicitní konverze pomocí CAST()

Zde je příklad explicitní konverze. V tomto případě používám CAST() funkce přímo v SELECT k explicitnímu převodu mezi datetime a datum .

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

Výsledek:

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

Příklad 3 – Explicitní převod pomocí CONVERT()

Zde je příklad explicitní konverze pomocí CONVERT() funkce namísto CAST() .

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

Výsledek:

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

  1. Cast z VARCHAR do INT - MySQL

  2. LIKE vs CONTAINS na SQL Server

  3. Funkce TO_DSINTERVAL() v Oracle

  4. Pochopení problému s nečistým čtením se serverem SQL