我有2个字段date_issued和time_issued,如下所示
date_issued time_issued
1031 225225 (22 hrs 52 mins 25 secs)
我需要将varchar值转换为datetime为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.
任何想法??
答案 0 :(得分: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))
答案 1 :(得分:0)
嗯,首先。
你有一个明显的错误。如果这些列是数字(而不是字符串),那么你要添加它们,这显然是错误的。
其次,如果这些是字符串,那么你错过了一年的日期区域并且你错过了:在时间区域。 第三,你需要在这两者之间添加一个'。
在我的例子中
SELECT convert(datetime,'20091231 12:12:12') FROM DUAL
我得到了
2009-12-31 12:12:12.000
P.S。是的,我在SQL服务器上有DUAL,这不是在Oracle中运行的。
答案 2 :(得分: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)