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

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

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

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

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

Когато конвертирате smalldatetime стойност до дата и час , малката дата стойността се копира в datetime стойност. Частичните секунди са зададени на 0.

В повечето случаи е по-добре да конвертирате в datetime2 тип данни вместо datetime . Правейки това ще осигурите повишена точност, като същевременно използвате същия размер за съхранение. Въпреки това, ако наистина трябва да е datetime , ето няколко примера.

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

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

DECLARE @thesmalldatetime smalldatetime, @thedatetime datetime;SET @thesmalldatetime ='2025-05-21 10:15:30';SET @thedatetime =@thesmalldatetime;SELECT @thesmalldatetime КАТО 'smalldatetime' КАТО 'smalldatetime';

Резултат:

+---------------------+----------------------- -+| smalldatetime | дата и час ||---------------------+--------------------- || 21.05.2025 10:16:00 | 2025-05-21 10:16:00,000 |+---------------------+---------------- ---------+

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

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

Въпреки това, datetime стойност включва 3-цифрена дробна част, която е настроена на нула.

Пример 2 – Промяна на дробната част

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

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

DECLARE @thesmalldatetime smalldatetime, @thedatetime datetime;SET @thesmalldatetime ='2025-05-21 10:15:30';SET @thedatetime =@thesmalldatetime;SELECT @thesmalldatetime КАТО 'smalldatetime' КАТО 'smalldatetime' , DATEADD(милисекунда, 123, @thedatetime) КАТО 'datetime Modified';

Резултат (с помощта на вертикален изход):

smalldatetime | 2025-05-21 10:16:00datetime | 2025-05-21 10:16:00.000datetime Променено | 21.05.2025 10:16:00.123

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

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

DECLARE @thesmalldatetime smalldatetime;SET @thesmalldatetime ='2025-05-21 10:15:30';ИЗБЕРЕТЕ @thesmalldatetime КАТО 'thesmalldatetime', CAST(@thesmalldatetime КАТО datetime) КАТО 'datetime';
 Резултат:

+---------------------+----------------------- -+| thesmalldatetime | дата и час ||---------------------+--------------------- || 21.05.2025 10:16:00 | 2025-05-21 10:16:00,000 |+---------------------+---------------- ---------+

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

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

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

Резултат:

+---------------------+----------------------- -+| thesmalldatetime | дата и час ||---------------------+--------------------- || 21.05.2025 10:16:00 | 2025-05-21 10:16:00,000 |+---------------------+---------------- ---------+

Както споменахме, помислете за конвертиране в datetime2 тип данни вместо datetime . Това осигурява повишена точност, като същевременно се използва същият размер за съхранение.


  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 винаги криптиран

  3. Време за изчакване на връзката за SQL сървър

  4. Запознаване с вашето работно натоварване на SQL Server

  5. Връща всички възможни комбинации от стойности на колони в SQL