两个 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)
我有两列:
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)