如何在SQL Server 2008中将int转换为日期

时间:2011-10-20 01:02:25

标签: sql sql-server-2005 sql-server-2008

我正在使用MS SQL Server 2008, 在表中,我将列idate作为日期,但是以整数格式表示。 但在查询中我希望以日期格式。 是否可以将整数日期转换为正确的日期时间格式?

5 个答案:

答案 0 :(得分:17)

您无法将整数值直接转换为日期,但您可以先将其转换为日期时间,然后转换为日期类型

select cast(40835 as datetime)

然后转换为日期(SQL 2008)

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

欢呼声

答案 1 :(得分:3)

您必须先将其转换为日期时间,然后再转换为日期。

试试这个,它可能会有所帮助:

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

然后转换为日期。

答案 2 :(得分:1)

您很可能想要查看T-SQL的 CAST和CONVERT 函数的文档,这些函数位于此处的文档中:http://msdn.microsoft.com/en-US/library/ms187928(v=SQL.90).aspx

然后,您将在T-SQL查询中使用其中一个函数将数据库中的[idate]列转换为输出中您喜欢的日期时间格式。

答案 3 :(得分:0)

阅读本文有助于解决类似的问题。数据是十进制数据类型 - [DOB] [十进制](8,0)NOT NULL - 例如 - 19700109.我想在这个月得到。解决方案是将SUBSTRING与CONVERT结合到VARCHAR。

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

答案 4 :(得分:0)

如果您的整数是以毫秒为单位的时间戳,请使用:

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

它会将毫秒格式化为yyyy-mm-dd string。