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

Преобразуване от DateTime в INT

РЕДАКТИРАНЕ:Прехвърлянето към float/int вече не работи в последните версии на SQL Server. Вместо това използвайте следното:

select datediff(day, '1899-12-30T00:00:00', my_date_field)
from mytable

Обърнете внимание, че датата на низа трябва да е в недвусмислен формат за дата, така че да не се влияе от регионалните настройки на вашия сървър.

В по-старите версии на SQL Server можете да конвертирате от DateTime в Integer чрез прехвърляне към float, след това към int:

select cast(cast(my_date_field as float) as int)
from mytable

(Забележка:Не можете да предавате направо към int, тъй като MSSQL закръгля стойността нагоре, ако сте изминали средата на деня!)

Ако във вашите данни има отместване, очевидно можете да добавите или извадите това от резултата

Можете да конвертирате в другата посока, като хвърлите направо назад:

select cast(my_integer_date as datetime)
from mytable


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. База данни, която може да обработва>500 милиона реда

  2. Какво представлява предаването на параметри към SQL и защо ми е необходимо?

  3. Последователност като стойност по подразбиране за колона

  4. Използвайте COLUMNPROPERTY() за връщане на информация за колона или параметър в SQL Server

  5. Защо 1899-12-30 е нулевата дата в Access / SQL Server вместо 12/31?