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

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

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

Очевидната последица от преобразуването на datetime стойност до дата е, че губите времевата част. Едно предимство обаче е, че намалявате размера на съхранение от 8 байта на 3 байта. Така или иначе, бихте направили това преобразуване само ако не се нуждаете от времевата част.

Дата и час типът данни включва датата и часа с 3-цифрена част от секундите. Неговата точност се закръглява до стъпки от .000, .003 или .007 секунди.

Обаче датата Типът данни има точност от 1 ден (и не включва часа, както беше споменато).

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

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

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

Резултат:

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

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

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

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

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

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

Резултат:

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

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

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

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

Резултат:

+-------------------------+------------+
| datetime                | date       |
|-------------------------+------------|
| 2025-05-21 10:15:30.123 | 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. Как мога да принудя рамката на обекта да вмъква колони за идентичност?

  2. IDENT_CURRENT срещу @@IDENTITY срещу SCOPE_IDENTITY в SQL Server:Каква е разликата?

  3. Как да игнорирате грешка при дублиран ключ в T-SQL (SQL сървър)

  4. Как да създадете множество едно към едно

  5. Оптимален начин за конкатенация/обединяване на низове