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

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

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

Jedna z výhod převodu smalldatetime hodnotu k datu je, že snížíte velikost úložiště ze 4 bajtů na 3 bajty. Z hodnoty však přijdete o časovou složku, takže tento převod byste provedli pouze v případě, že čas nepotřebujete.

smalldatetime datový typ jak datum, tak čas. Jeho sekundová složka je vždy nastavena na nulu (:00) a nemá žádné zlomkové sekundy. Jeho přesnost je s přesností na minutu. Velikost jeho úložiště je 4 bajty.

Datum datový typ na druhé straně obsahuje pouze datum. Jeho přesnost je na nejbližší den. Velikost jeho úložiště je 3 bajty.

Aby bylo jasno, když převedete smalldatetime hodnotu k datu , zkopíruje se rok, měsíc a den. Čas se nezkopíruje.

Příklad 1 – Implicitní konverze

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

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

Výsledek:

+---------------------+------------+
| smalldatetime       | thedate    |
|---------------------+------------|
| 2025-05-21 10:16:00 | 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 smalldatetime hodnotu k datu proměnná.

V tomto příkladu můžeme vidět, že část data smalldatetime hodnota se zkopíruje do datu hodnotu a že se čas nezkopíruje.

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

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

Výsledek:

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

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

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

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

Výsledek:

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

  1. ZOBRAZIT TABULKY v MariaDB

  2. v blízkosti chyby synatx (kód 1) vložte Android SQLite

  3. MySQL Master to Master replikace

  4. Vylepšení tempdb v SQL Server 2019