Mac De PL/SQL RSS Reader #16 Tweet
と前々回も書いたように、入力される文字列は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;
/
聞いている曲:
やはり、80sにはすばらしい曲、というか記憶に残る曲が多いよね。 まぁ、このAvalonに関しては、日産のCMで使われたりしたので最近の曲? という方も多いのだけれど。。。
Roxy Music - Avalon - The Space Between

| 固定リンク | 0
コメント