简体   繁体   English

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM