Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Преобразувайте „datetime2“ в „date“ в SQL Server (T-SQL примери)

Тази статия съдържа примери за преобразуване на datetime2 стойност до дата стойност в SQL Server.

Когато конвертирате datetime2 стойност до дата тип данни, губите частта от време. Въпреки това, вие също така намалявате размера на съхранение от между 7 и 9 байта на 3 байта. Във всеки случай бихте направили това преобразуване само ако не се нуждаете от времевата част.

datetime2 типът данни включва датата и часа с част от секунди между 0 и 7 (това зависи от това колко частни секунди са му присвоени). Неговата точност е 100 наносекунди.

Датата тип данни от друга страна, не включва времето и има точност от 1 ден.

Пример 1 – Неявно преобразуване

Ето пример за имплицитно преобразуване между datetime2 и дата .

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

Резултат:

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

Това е имплицитно преобразуване, защото не използваме функция за преобразуване (като тези по-долу), за да я преобразуваме изрично. В този случай SQL Server изпълнява имплицитно преобразуване зад кулисите, когато се опитваме да присвоим datetime2 стойност до дата променлива.

Тук можем да видим, че датата стойността включва само датата (без компонента за време).

В този пример datetime2 value използва точността по подразбиране (което води до 7 знака след десетичната запетая). Това може да бъде намалено до произволно число и резултатът от преобразуването ще бъде същият.

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';

Резултат:

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

Пример 2 – Изрично преобразуване с помощта на CAST()

Ето пример за изрично преобразуване. В този случай използвам CAST() функция директно в SELECT изявление за изрично преобразуване между datetime2 и дата .

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

Резултат:

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

Пример 3 – Изрично преобразуване с помощта на CONVERT()

Ето пример за изрично преобразуване с помощта на CONVERT() функция вместо CAST() .

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

Резултат:

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Статистика за използване на индекса на SQL Server

  2. INSERT INTO срещу SELECT INTO

  3. Разлика между JOIN и INNER JOIN

  4. Версиониране на база данни на SQL Server

  5. Разработки на виртуална машина Azure за използване на SQL Server