Как конвертировать int в дату в SQL Server 2008 - PullRequest
10 голосов
/ 20 октября 2011

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

Ответы [ 5 ]

18 голосов
/ 20 октября 2011

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

select cast(40835 as datetime)

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

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

ура

3 голосов
/ 19 июня 2013

Вы должны сначала преобразовать его в дату-время, затем в дату.

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

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

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

1 голос
/ 20 октября 2011

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

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

0 голосов
/ 04 февраля 2016

Если ваше целое число является меткой времени в миллисекундах, используйте:

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

Форматирует миллисекунды в строку гггг-мм-дд.

0 голосов
/ 10 января 2014

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

    SELECT [NUM]
       ,SUBSTRING(CONVERT(VARCHAR, DOB),5,2) AS mob
    FROM [Dbname].[dbo].[Tablename] 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...