一起添加日期列和nvarchar列

时间:2015-11-09 07:29:24

标签: sql tsql sql-server-2014

我的Test表中有3列,看起来像这样

DATE        TIME       Combined
2015-08-17  16:07:49
2015-08-18  08:13:23
2015-08-18  08:13:24
2015-08-18  08:14:36

我想要做的是结合日期和时间列来填充合并列

DATE列实际上是日期数据类型。

Time列实际上是nvarchar(MAX)数据类型。

我不确定如何使用Combined列。

是否可以将两者一起添加,或者我必须转换时间,如果是,我该如何进行此转换?

我用过:

alter table [dbo].[Test] alter column [TIME] time(0)

并收到此错误消息:

Conversion failed when converting date and/or time from character string.

有没有人对我有任何见解,如果我甚至需要转换它?

2 个答案:

答案 0 :(得分:2)

combined列的数据类型应为datetime2(或datetime),因为它将保留。

您无法将varchar值添加到日期类型值,但要填充它,您可以将[date]列强制转换为datetime,并将带有时间部分的varchar字符串添加到它是这样的:

update dbo.test set combined = cast([date] as datetime) + [time] from dbo.test

然而,这依赖于[time]列中的值有效,并且您获得的错误消息表明某些值不是,因此您需要首先识别并更正这些值

Example SQL Fiddle

答案 1 :(得分:0)

用于显示尝试, 从测试中选择[日期] +''+时间作为CombinedColumn