0

我有 2 个字段 date_issued 和 time_issued 如下

date_issued       time_issued
1031              225225 (22 hrs 52 mins 25 secs)    

我需要将该 varchar 值转换为日期时间为 dd-mm-yy h:m:s

我试过以下

select CONVERT(datetime, date_issued+time_issued ,120) as ttt from tbl

但显示以下错误

Msg 241, Level 16, State 1, Line 2
Conversion failed when converting datetime from character string.

有任何想法吗??

4

3 回答 3

1

假设年份是 2012 年:

select CONVERT(datetime, '2012' + LEFT(date_issued, 2) + RIGHT(date_issued, 2) + ' ' + LEFT(time_issued, 2) + ':' + SUBSTRING(time_issued, 3, 2) + ':' + right(time_issued, 2))
于 2012-11-28T11:52:44.267 回答
0

嗯,首先。

你有一个明显的错误。如果这些列是数字(而不是字符串),那么您将它们相加,这显然是错误的。

其次,如果这些是字符串,那么您在日期区域中缺少一年,并且在时间区域中缺少 :。第三,您需要在这 2 之间添加一个 ' '。

在我的例子中

SELECT convert(datetime,'20091231 12:12:12') FROM DUAL

我明白了

2009-12-31 12:12:12.000

PS 是的,我在 SQL 服务器中有 DUAL,这不是在 Oracle 中运行的。

于 2012-11-28T11:40:22.813 回答
0

这是一种方法,REPLICATE如果数据包含前导零,您可以删除,否则需要填充以区分日期部分。

select
    cast ( 
        stuff(replicate('0', 4 - len(date_issued)) + date_issued, 3, 0, '/') + '/2012'
        + ' ' +
        stuff(stuff(replicate('0', 6 - len(time_issued)) + time_issued, 3, 0, ':'), 6 ,0 ,':')
    as datetime)
于 2012-11-28T11:55:35.463 回答