我使用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)
答案 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)