[英]I can not convert Oracle query to SQL Server (to_date operator)
I have a select
query with Oracle syntax: 我有一个使用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
and I need convert this query to T-SQL syntax. 我需要将此查询转换为T-SQL语法。
I tried to convert this line 我试图转换这行
to_date(acdr.cdrdate || acdr.cdrtime, 'ddmmrrhh24mi') call_date
to this: 对此:
CONVERT(varchar(50), C, 102) call_date
and 和
CONVERT(DATETIME, CONCAT(acdr.cdrdate, acdr.cdrtime), 104) call_date
and I tried operator cast
but it did not help. 我尝试了运算符
cast
但没有帮助。
operator CONCAT(acdr.cdrdate,acdr.cdrtime)
works normally and similarly ||
操作符
CONCAT(acdr.cdrdate,acdr.cdrtime)
正常工作,并且类似||
in Oracle. 在Oracle中。 But I can not convert String to Date.
但是我不能将String转换为Date。
ERROR: 错误:
Conversion failed when converting date and/or time from character string.
从字符串转换日期和/或时间时转换失败。
select CONCAT(acdr.cdrdate,acdr.cdrtime) call_date from [avaya_cm_cdr] acdr
RESULT: 结果:
0112151647
0112151647
0112151647
0112151647
0112151647
CDRDATE varchar(6)
CDRTIME varchar(4)
有帮助吗?
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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.