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

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

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

Едно от предимствата на преобразуването на datetime2 стойност на smalldatetime е, че намалявате размера на съхранение от 7, 8 или 9 байта на 4 байта. Въпреки това губите прецизност.

datetime2 типът данни ви позволява да зададете точност на частични секунди от 0 до 7. Ако не посочите това, той ще използва 7 (по подразбиране). Ако посочите нула (0 ), точността му ще бъде до най-близката секунда.

Smalldatetime тип данни от друга страна, няма частни секунди и неговият компонент за секунди винаги е настроен на нула (:00). Неговата точност е до най-близката минута.

Когато конвертирате datetime2 стойност на smalldatetime , датата и частта от часа се копират. Компонентът за секунди е настроен на нула (независимо от първоначалната стойност на компонента за секунди) и времето се закръглява до най-близката минута. Всички части от секундите се премахват.

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

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

ДЕКЛАРИРАНЕ @thedatetime2 datetime2, @thesmalldatetime smalldatetime;SET @thedatetime2 ='2025-05-21 10:15:30.1234567';SET @thesmalldatetime =@thedatetime2;;

Резултат:

+----------------------------+---------------- -----+| дата и час2 | smalldatetime ||----------------------------+---------------- ----|| 2025-05-21 10:15:30.1234567 | 2025-05-21 10:16:00 |+----------------------------+-------- ------------+

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

В този пример можем да видим, че smalldatetime стойността не включва дробните секунди, секундите са зададени на нула, а минутата е закръглена нагоре.

В този случай datetime2 value използва точност от 7. Това е така, защото 7 е стойността по подразбиране. Не посочих точност и затова беше използвана стойността по подразбиране.

Но би върнал същия резултат, независимо от прецизността, която избрах. Дори да го намалих до нула (т.е. да го декларирах като datetime2(0) ), пак щеше да върне същия резултат.

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

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

DECLARE @thedatetime2 datetime2(0);SET @thedatetime2 ='2025-05-21 10:15:30';ИЗБЕРЕТЕ @thedatetime2 КАТО 'datetime2', CAST(@thedatetime2 КАТО smalldatetime) КАТО 'smalldatetime'; 

Резултат:

+---------------------+---------------------+| дата и час2 | smalldatetime ||---------------------+---------------------|| 21.05.2025 10:15:30 | 21.05.2025 10:16:00 |+---------------------+---------------- -----+

В този пример реших да използвам скала от нула за datetime2 стойност (т.е. datetime2(0) ), обаче, това не засяга полученото smalldatetime стойност.

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

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

DECLARE @thedatetime2 datetime2(0);SET @thedatetime2 ='2025-05-21 10:15:30';ИЗБЕРЕТЕ @thedatetime2 КАТО 'datetime2', CONVERT(smalldatetime, @thedatetime2) КАТО 'smalldatetime'; предварително> 

Резултат:

+---------------------+---------------------+| дата и час2 | smalldatetime ||---------------------+---------------------|| 21.05.2025 10:15:30 | 21.05.2025 10:16:00 |+---------------------+---------------- -----+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да получите числовата част от низ с помощта на T-SQL?

  2. Извършване на регулярни изрази (замяна) в SQL заявка

  3. Как да получите дефиниция на изчислена колона в SQL Server с помощта на T-SQL

  4. Как да деинсталирате SQL Server Management Studio(SSMS) - урок за SQL Server/TSQL, част 23.1

  5. SQL точка нотация