有一个要求,我的oracle过程是由java api使用REST或SOAP调用调用的。
示例程序
procedure sample(id in varchar2(30),logged_dt in varchar2(30),name out varchar2(30))
BEGIN
<DATE CONVERSION LOGIC>
END;
/
logged_dt输入在以下任何一种情况下都以GMT日期格式传递,例如
我需要处理dateformat到来并转换为所需的oracle UTC时区格式。
我转换了一个样本案例
&#39; 2016-10-06T11:31:28.592 + 0000'
to_timestamp_tz(to_timestamp('2016-10-06T11:31:28.592+0000’,'YYYY-MM-DD"T"HH24:MI:SS.ff3"+0000"') at time zone 'UTC')
如何将INPUT过程中的任何内容动态转换为所需格式并将其转换为时区UTC格式
答案 0 :(得分:1)
难以处理“输入任何内容”,请查看各种全球日期格式:Date format by country或Date Format
但是,为了处理您提供的输入值,您可以使用如下函数:
FUNCTION String2Timestamp(ts IN VARCHAR2) RETURN TIMESTAMP WITH TIME ZONE DETERMINISTIC IS
BEGIN
IF REGEXP_LIKE(ts, '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\+|-)\d{2}:\d{2}$') THEN
RETURN TO_TIMESTAMP_TZ(ts, 'YYYY-MM-DD"T"HH24:MI:SSTZM:TZH') AT TIME ZONE 'UTC';
ELSIF REGEXP_LIKE(ts, '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z$') THEN
RETURN TO_TIMESTAMP(ts, 'YYYY-MM-DD"T"HH24:MI:SS"Z"') AT TIME ZONE 'UTC';
END IF;
END String2Timestamp;