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

14

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


当你说你有一个日期的整数格式时,你到底是什么意思 - 什么是格式? - qxotk
Davey是正确的。在我运行的测试中,DATEADD(DAY, 40835, '1900-01-01')稍微快一些。 - Adam Wenger
4个回答

20

你不能直接将整数值转换为日期,但可以先将它转换为datetime类型,然后再转换为日期类型

select cast(40835 as datetime)

然后在SQL 2008中转换为日期

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

干杯!


1
刚刚重新阅读了您的问题,如果想要将其作为日期时间,则只需执行选择cast(40835 as datetime)即可。 - davey
1
我必须从我的整数值(来自Excel)中减去2天才能得到正确的日期,例如选择cast(40835-2 as datetime)。 - cgage1

4

你需要先将它转换成日期时间,然后再转换成日期。

尝试这个方法,可能会有帮助:

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

然后转换为日期。


1

0
阅读此内容有助于解决类似的问题。数据以十进制数据类型存储 - [DOB] [decimal](8, 0) NOT NULL - 例如 - 19700109。我想获取月份。解决方案是将SUBSTRING与CONVERT转换为VARCHAR相结合使用。
    SELECT [NUM]
       ,SUBSTRING(CONVERT(VARCHAR, DOB),5,2) AS mob
    FROM [Dbname].[dbo].[Tablename] 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接