两个 nvarchar 列合并为一个日期时间。微软数据库

Two nvarchar columns into one datetime. MSSQL

我有两列:

 date(nvarchar) - it looks like '2015-04-15 00:00:00.000' 
 time(nvarchar) - looks like '1899-12-30 11:20:25.000' 

我需要将其合并为一列(日期时间)。我该怎么做?

首先,不要将 date/time 值存储为字符。但是,您可以转换它们并添加它们:

select cast(datechar as datetime) + cast(right(timechar, 12) as time)

我才意识到。我不记得默认 date/time 格式是否理解小数秒。以下比较安全:

select (convert(datetime, datechar, 121) +
        convert(time, convert(datetime, timechar, 121))
       ) as datetimeval

例如,添加第 3 列 ([FullDate]) 后,您可以使用以下代码:

UPDATE TABLE
SET [FullDate] = DATEADD(SECOND, SECOND(TIME), DATEADD(MINUTE, MINUTE(TIME), DATEADD(HOUR, HOUR(TIME), DATE)))

或者,您可以按照@GordonLinoff 提到的那样进行操作,但请确保将 time 部分转换为 datetime。所以,像这样:

UPDATE TABLE
SET [FullDate] = CAST([date] as DATETIME) + CAST([time] AS DATETIME)