« Mac De PL/SQL RSS Reader #15 | トップページ | Mac De PL/SQL RSS Reader #17 »

2006年10月12日 (木) / Author : Hiroshi Sekiguchi.

Mac De PL/SQL RSS Reader #16

前回のつづき。rfc3339の日付/日時フォーマット対応ストアドプロシージャのソースコードは以下。。

create or replace FUNCTION RFC3339_DateStrToTimeStampLTZ
(
i_dateTimeString IN VARCHAR2
)
RETURN TIMESTAMP WITH LOCAL TIME ZONE
AS
v_tempTimeStampTz TIMESTAMP WITH LOCAL TIME ZONE := NULL;
v_dateTimeString VARCHAR2(50) := NULL;
v_timeStampTzFormat VARCHAR2(40) := NULL;
c_nls_date_language CONSTANT VARCHAR2(40) := 'NLS_DATE_LANGUAGE=AMERICAN';
BEGIN
v_dateTimeString := REGEXP_REPLACE(
REGEXP_REPLACE(
UPPER(i_dateTimeString),
'T', NULL, 1, 1
),
'Z$', 'UTC'
);

IF v_dateTimeString IS NULL THEN
RETURN NULL;
END IF;


v_timeStampTzFormat := 'RRRR-MM-DD';

IF LENGTH(v_dateTimeString) >= 10 THEN

IF REGEXP_INSTR(v_dateTimeString , '([0-9]{2}:){2}[0-9]{2}\.?') >= 1 THEN
v_timeStampTzFormat := v_timeStampTzFormat || 'HH24:MI:SSXFF';
END IF;

IF REGEXP_INSTR(v_dateTimeString, '(\+|\-)[0-9]{2}:[0-9]{2}$') >= 1 THEN
v_timeStampTzFormat := v_timeStampTzFormat || 'TZH:TZM';
ELSIF REGEXP_INSTR(v_dateTimeString, 'UTC$') >= 1 THEN
v_timeStampTzFormat := v_timeStampTzFormat || 'TZR';
END IF;
END IF;

v_tempTimeStampTz := TO_TIMESTAMP_TZ(
v_dateTimeString,
v_timeStampTzFormat,
c_nls_date_language
);

RETURN v_tempTimeStampTz;

EXCEPTION
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR(
-20002,
'RFC3339_DateStrToTimeStampLTZ():' || SQLERRM()
);
END;
/
前々回も書いたように、入力される文字列はrfc3339日付/日時フォーマットを前提としているため、入力書式の厳密なチェックなどは行っていない。
聞いている曲:
やはり、80sにはすばらしい曲、というか記憶に残る曲が多いよね。 まぁ、このAvalonに関しては、日産のCMで使われたりしたので最近の曲? という方も多いのだけれど。。。
Roxy Music - Avalon - The Space Between Roxy Music - Avalon - The Space Between

| |

トラックバック


この記事へのトラックバック一覧です: Mac De PL/SQL RSS Reader #16:

コメント

コメントを書く