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

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

Ако имате отместване на датата и времето стойност, но не се нуждаете от частта за отместване на часовата и часовата зона, като я преобразувате в дата ще ви спести много място за съхранение (като същевременно премахва ненужните подробности от стойността). Тази статия съдържа примери за преобразуване на datetimeoffset стойност до дата стойност в SQL Server.

отместването на датата и времето типът данни включва датата и часа с изместване на часовата зона. Той също има част от секунди между 0 и 7 (това зависи от това колко частни секунди са му присвоени). Това се прави с помощта на datetimeoffset(n) синтаксис. Ако не посочите това, той ще използва 7 (по подразбиране). Размерът за съхранение на този тип данни е 8, 9 или 10 байта (плюс 1 байт за съхранение на точността), в зависимост от използваната прецизност. Неговата точност е 100 наносекунди.

Датата тип данни от друга страна, включва само датата. Той не включва времето и има точност от 1 ден. Използва 3 байта за съхранение.

Когато конвертирате datetimeoffset стойност до дата тип данни губите времевата част (включително изместването на часовата зона). Въпреки това, вие също намалявате размера на съхранение до фиксирани 3 байта. Разбира се, бихте направили това преобразуване само ако не се нуждаете от часовата част и изместването на часовата зона.

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

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

DECLARE @thedatetimeoffset datetimeoffset, @thedate date;SET @thedatetimeoffset ='2025-05-21 10:15:30.1234567 +10:30';SET @thedate =@thedatetimeoffset;SELECT @thedatetimeoffsetda AS' КАТО 'дата';

Резултат:

+----------------------------------+-------- ---+| datetimeoffset | дата ||-----------------------------------+---------- --|| 2025-05-21 10:15:30.1234567 +10:30 | 2025-05-21 |+-----------------------------------+----- ------+

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

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

В този пример datetimeoffset value използва точността по подразбиране (което води до 7 знака след десетичната запетая). Това води до това, че типът данни използва 10 байта (всъщност 11 байта, ако преброите допълнителния байт, който съхранява прецизността). Датата стойност използва само 3 байта.

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

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

DECLARE @thedatetimeoffset datetimeoffset;SET @thedatetimeoffset ='2025-05-21 10:15:30.1234567 +10:30';ИЗБЕРЕТЕ @thedatetimeoffset КАТО 'datetimeoffset', CAST(@thedatetimeoffset' AS date'; AS date' 

Резултат:

+----------------------------------+-------- ---+| datetimeoffset | дата ||-----------------------------------+---------- --|| 2025-05-21 10:15:30.1234567 +10:30 | 2025-05-21 |+-----------------------------------+----- ------+

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

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

DECLARE @thedatetimeoffset datetimeoffset;SET @thedatetimeoffset ='2025-05-21 10:15:30.1234567 +10:30';SELECT @thedatetimeoffset КАТО 'datetimeoffset', CONVERT(date, offset) @thedate 

Резултат:

+----------------------------------+-------- ---+| datetimeoffset | дата ||-----------------------------------+---------- --|| 2025-05-21 10:15:30.1234567 +10:30 | 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 (T-SQL)

  2. Системни бази данни на SQL Server – Поддръжка на MSDB

  3. Добавяне на стъпка на задача към съществуваща задача на агент на SQL Server (T-SQL)

  4. SQL Server 2016:Създайте изглед

  5. Кой е най-добрият метод за предаване на параметри към SQLCommand?