【发布时间】:2017-02-07 16:02:45
【问题描述】:
我有两列:
date(nvarchar) - it looks like '2015-04-15 00:00:00.000'
time(nvarchar) - looks like '1899-12-30 11:20:25.000'
我需要将其合并为一列(日期时间)。我该怎么做?
【问题讨论】:
标签: sql sql-server datetime select varchar
我有两列:
date(nvarchar) - it looks like '2015-04-15 00:00:00.000'
time(nvarchar) - looks like '1899-12-30 11:20:25.000'
我需要将其合并为一列(日期时间)。我该怎么做?
【问题讨论】:
标签: sql sql-server datetime select varchar
首先,不要将日期/时间值存储为字符。但是,您可以转换它们并添加它们:
select cast(datechar as datetime) + cast(right(timechar, 12) as time)
我刚刚意识到。我不记得默认日期/时间格式是否理解小数秒。以下更安全:
select (convert(datetime, datechar, 121) +
convert(time, convert(datetime, timechar, 121))
) as datetimeval
【讨论】:
time组件;我猜 SQL Server 会将其转换回 datetime。
例如,添加第 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)
【讨论】: