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

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

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

Když převedete datetime2 hodnotu k datu datový typ, ztratíte časovou část. Můžete však také snížit velikost úložiště ze 7 až 9 bajtů na 3 bajty. V každém případě byste tento převod provedli pouze v případě, že nepotřebujete časovou část.

datetime2 datový typ zahrnuje datum a čas se zlomkovými sekundami mezi 0 a 7 (to závisí na tom, kolik zlomkových sekund je mu přiřazeno). Jeho přesnost je 100 nanosekund.

Datum datový typ na druhé straně nezahrnuje čas a má přesnost 1 dne.

Příklad 1 – Implicitní konverze

Zde je příklad implicitní konverze mezi datetime2 a datum .

DECLARE 
  @thedatetime2 datetime2, 
  @thedate date;
SET @thedatetime2 = '2025-05-21 10:15:30.1234567';
SET @thedate = @thedatetime2;
SELECT 
  @thedatetime2 AS 'datetime2',
  @thedate AS 'date';

Výsledek:

+-----------------------------+------------+
| datetime2                   | date       |
|-----------------------------+------------|
| 2025-05-21 10:15:30.1234567 | 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 datetime2 hodnotu k datu proměnná.

Zde vidíme, že datum hodnota obsahuje pouze datum (bez časové složky).

V tomto příkladu datetime2 hodnota používá výchozí přesnost (což má za následek 7 desetinných míst). To by se dalo snížit na libovolné číslo a výsledek převodu by byl stejný.

DECLARE 
  @thedatetime2 datetime2(0), 
  @thedate date;
SET @thedatetime2 = '2025-05-21 10:15:30.1234567';
SET @thedate = @thedatetime2;
SELECT 
  @thedatetime2 AS 'datetime2',
  @thedate AS 'date';

Výsledek:

+---------------------+------------+
| datetime2           | date       |
|---------------------+------------|
| 2025-05-21 10:15:30 | 2025-05-21 |
+---------------------+------------+

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 datetime2 a datum .

DECLARE @thedatetime2 datetime2(4);
SET @thedatetime2 = '2025-05-21 10:15:30.1234';
SELECT 
  @thedatetime2 AS 'datetime2',
  CAST(@thedatetime2 AS date) AS 'date'; 

Výsledek:

+--------------------------+------------+
| datetime2                | date       |
|--------------------------+------------|
| 2025-05-21 10:15:30.1234 | 2025-05-21 |
+--------------------------+------------+

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

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

DECLARE @thedatetime2 datetime2(4);
SET @thedatetime2 = '2025-05-21 10:15:30.1234';
SELECT 
  @thedatetime2 AS 'datetime2',
  CONVERT(date, @thedatetime2) AS 'date'; 

Výsledek:

+--------------------------+------------+
| datetime2                | date       |
|--------------------------+------------|
| 2025-05-21 10:15:30.1234 | 2025-05-21 |
+--------------------------+------------+

  1. Sloučení datových souborů se Statistica, část 1

  2. Psaní čitelného kódu pro VBA – vzor Vyzkoušejte*

  3. Příklady převodu „čas“ na „datum a čas“ v SQL Server (T-SQL)

  4. Chyba MySql:1364 Pole 'display_name' nemá výchozí hodnotu