SQL Server:转换((INT)年,(INT)月,(INT)天)date时间

可能重复:
用T-SQL创build一个date

我有一个数据表,每年,每月和每天的价值存储为整数:

year | month | day 2009 | 1 | 1 2008 | 12 | 2 2007 | 5 | 5 

我需要将其转换为date时间值,因为我需要在操作之间的date时间使用它。 我怎么能这样做?

为了独立于语言和区域设置,您应该使用ISO 8601 YYYYMMDD格式 – 这可以在任何语言和区域设置有效的任何SQL Server系统上运行:

 SELECT CAST( CAST(year AS VARCHAR(4)) + RIGHT('0' + CAST(month AS VARCHAR(2)), 2) + RIGHT('0' + CAST(day AS VARCHAR(2)), 2) AS DATETIME) 

纯date时间解决scheme,不依赖于语言或DATEFORMAT,没有string

 SELECT DATEADD(year, [year]-1900, DATEADD(month, [month]-1, DATEADD(day, [day]-1, 0))) FROM dbo.Table 

您可以将您的值转换为“十进制”date时间,然后将其转换为实际的date时间列:

 select cast(rtrim(year *10000+ month *100+ day) as datetime) as Date from DateTable 

看到这里以及更多的信息。

 SELECT CAST(CAST(year AS varchar) + '/' + CAST(month AS varchar) + '/' + CAST(day as varchar) AS datetime) AS MyDateTime FROM table