2011-09-02 75 views
41

好了 - 我已经问了几个人,有一定是一个简单的方法来做到这一点....结合日期和时间字段为DateTime,SQL Server 2008中

declare @Date date 
declare @Time time 
declare @datetime datetime 

select @Date = convert(Date,GetDate()) 
select @Time = convert(Time,GetDate()) 

select @Date, @Time, @Date + @Time (+ operator fails!) 

我真的有到: 1)转换为字符串,然后转换为日期时间字段? 2)使用使用DateAdd和日期部分先添加小时,然后分钟,然后秒.....

+4

我不认为这是一个重复的问题,这是一个关于新问题日期和时间类型在SQL 2008中。另一个问题根本不涉及这些,并且都是关于DateTime类型的。 –

回答

52
@Date + cast(@Time as datetime) 

在SQL Server 2012中,我假设的SQL Server 2014,你neeed投在日期和时间变量约会时间。

cast(@Date as datetime) + cast(@Time as datetime) 
+0

消息402,级别16,状态1,行8 数据类型日期和日期时间在添加运算符中不兼容。 – Davos

+0

同意,查找错误 - SQL Server数据库错误:数据类型日期和日期时间在添加运算符中不兼容。你需要像@jdavies指出的那样将它们都转换为日期时间。 – mprost

+0

@mprost不在SQL Server 2008中,但在SQL Server 2012中,您是正确的。也可能在SQL Server 2014中。我已经更新了答案。 –

9

先尝试他们两个铸造DATETIME:

SELECT CAST(@Date AS DATETIME) + CAST(@Time AS DATETIME) 
+0

正确的是非确定性形式:ALTER TABLE MyTable的 ADD MyDateTime2 AS ( \t DATEADD \t( 天 \t \t,DATEDIFF \t \t( \t 天 \t \t \t,CONVERT(DATE,“1 9000101' ,112) \t \t \t,数值指明MyDate \t \t) \t \t,CONVERT(DATETIME2(7)中,数值指明MyTime) \t) )坚持 –

3

这应该工作:

select @Date, @Time, CAST(@Date AS datetime) + CAST(@Time AS datetime) 
相关问题