我无法将Oracle查询转换为SQL Server(to_date运算符)

时间:2015-12-08 05:59:15

标签: sql-server oracle

我使用Oracle语法进行select查询:

select 
    to_date(acdr.cdrdate||acdr.cdrtime,'ddmmrrhh24mi') call_date,
    regexp_substr(acdr.secdur,'([1-9]{1}[0-9]?+)') call_duration,
    regexp_substr(acdr.dialednum,'^2[0-9]{3}') operator_avaya_id,
    regexp_substr(callingnum,'^(996)[0-9]{9}') calling_number,
    acdr.acmcdr_id
from 
    avaya_cm_cdr acdr

我需要将此查询转换为T-SQL语法。

我尝试转换此行

to_date(acdr.cdrdate || acdr.cdrtime, 'ddmmrrhh24mi') call_date

到此:

CONVERT(varchar(50), C, 102) call_date

CONVERT(DATETIME, CONCAT(acdr.cdrdate, acdr.cdrtime), 104) call_date

我尝试了操作符cast,但没有帮助。

运算符CONCAT(acdr.cdrdate,acdr.cdrtime)在Oracle中正常工作,类似||。但是我无法将String转换为Date。

错误:

  

从字符串转换日期和/或时间时转换失败。

select CONCAT(acdr.cdrdate,acdr.cdrtime) call_date from [avaya_cm_cdr] acdr

结果:

0112151647
0112151647
0112151647
0112151647
0112151647


CDRDATE varchar(6)
CDRTIME varchar(4)

1 个答案:

答案 0 :(得分:0)

有帮助吗?

convert(datetime, SUBSTRING(acdr.cdrdate,5,2) + SUBSTRING(acdr.cdrdate,3,2) + SUBSTRING(acdr.cdrdate,1,2), 12) + convert(datetime, SUBSTRING(acdr.cdrtime,1,2) + ':' + SUBSTRING(acdr.cdrtime,3,2) + ':00', 108)