Как преобразовать int в date в SQL Server 2008

Я использую MS SQL Server 2008, и в таблице у меня есть столбец дата как дата, но в формате целого числа. Но в запросе я хочу, чтобы это было в формате даты. Можно ли преобразовать целочисленную дату в правильный формат datetime?

5 ответов


вы не можете преобразовать целое значение прямо в дату, но вы можете сначала его в datetime, а затем в тип даты

select cast(40835 as datetime)

а затем преобразовать в дату (SQL 2008)

select cast(cast(40835 as datetime) as date)

ура


вы должны сначала преобразовать его в datetime, а затем в date.

попробуйте, это может быть полезно:

Select Convert(DATETIME, LEFT(20130101, 8))

затем преобразовать в дату.


вы, скорее всего, хотите изучить документацию для T-SQL CAST и конвертировать функции, расположенные в документации здесь:http://msdn.microsoft.com/en-US/library/ms187928 (v=SQL.90).aspx

затем вы будете использовать одну из этих функций в своем запросе T-SQL для преобразования столбца [idate] из базы данных в формат datetime по вашему вкусу в выходных данных.


чтение через это помогает решить аналогичную проблему. Данные находятся в десятичном типе данных - [DOB] [decimal] (8, 0) NOT NULL - eg - 19700109. Я хочу добраться до месяца. Решение заключается в объединении подстроки с CONVERT to VARCHAR.

    SELECT [NUM]
       ,SUBSTRING(CONVERT(VARCHAR, DOB),5,2) AS mob
    FROM [Dbname].[dbo].[Tablename] 

Если целое число типа timestamp в миллисекундах использовать:

SELECT strftime("%Y-%d-%m", col_name, 'unixepoch') AS col_name

он будет форматировать миллисекунды в строку гггг-ММ-ДД.