Datetime2和Varchar列的日期时间

时间:2016-06-16 08:45:31

标签: sql sql-server-2008 datetime

为简单起见,我在表格中有两列

DATE =  DateTime2(7)  2016-06-16 00:00:00.000000 
TIME =  Varchar(5)    09:00

我已经尝试了几个强制转换和转换,如下面的示例所示,尝试将它们组合成一个新列,作为Dateocity的 2016-06-16 09:00:00.000000 格式:

convert(datetime, 
convert(varchar(10),DATE, 121) + ' ' + convert(varchar(8),TIME, 108)) 
as 'DateTime'

但我一直收到这个错误:

  

从字符串转换日期和/或时间时转换失败。

感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

您的time已经是一个字符串。所以你应该这样做:

convert(varchar(10), [DATE], 121) + ' ' + [TIME]

如果您只想要HH:MM:SS格式,请使用LEFT()

convert(varchar(10), [DATE], 121) + ' ' + LEFT([TIME], 8)

返回一个字符串。

请注意,您只需添加datetime值,这样您就可以执行以下操作:

select [DATE] + CAST([TIME} as DATETIME)

答案 1 :(得分:0)

order_by

结果:

DECLARE @DATE  DateTime2(7) =  '2016-06-16 00:00:00.000000' 
DECLARE @TIME Varchar(15) = '09:00:00.000000'

SELECT  CAST(
            CAST(@DATE as date) 
        as datetime) + 
        CAST(
            CAST(@TIME as time) 
        as datetime) As DateTimeValue