使用sql Server 2008,此查询非常有用:
select CAST(CollectionDate as DATE),CAST(CollectionTime as TIME) from field
给我两个这样的列:
2013-01-25 18:53:00.0000000 2013-01-25 18:53:00.0000000 2013-01-25 18:53:00.0000000 2013-01-25 18:53:00.0000000 . . .
我正在尝试使用加号将它们组合成单个日期时间,如下所示:
select CAST(CollectionDate as DATE) + CAST(CollectionTime as TIME) from field
我查看了大约十个网站,包括这个网站上的答案(如this one),他们似乎都同意加号应该有效,但我收到错误:
Msg 8117,Level 16,State 1,Line 1
Operand data type date is invalid for add operator.
所有字段都是非零且非空.我也尝试过CONVERT函数并尝试将这些结果转换为varchars,同样的问题.这不会像我做的那么难.
有人可以告诉我为什么这不起作用?谢谢你的帮助.
解决方法
假设基础数据类型是日期/时间/日期时间等.
SELECT CONVERT(DATETIME,CONVERT(CHAR(8),CollectionDate,112) + ' ' + CONVERT(CHAR(8),CollectionTime,108)) FROM dbo.whatever;
如果它们不是,为什么不是,为了获得有意义的答案,您需要告诉我们它们是什么类型以及存储数据的格式.或者只是修复表格.