LoginSignup
1
0

Oracle Database の date 型への変換処理を Databricks へ移行する際の注意事項

Posted at

概要

Oracle Database では文字型から Date 型へ変換する処理を Databricks に移行する際には、フォーマットを指定せずに変換可能なフォーマットが異なることに注意が必要です。

Oracle では、yyyy-MM-ddyyyyMMdd、および、yyyy/MM/ddにいずれの日付形式でも data 型に変換ができます。

image.png

それに対して、Databricks では、yyyy-MM-ddの日付形式でのみ data 型に変換ができます。

image.png

よって、Oracle Database では文字型から Date 型へ変換する処理を Databricks に移行する際には、フォーマットを明示する必要があるケースがあることに注意が必要です。仕様確認のコードと対応方法のコードを共有します。

仕様確認と対応方法

Oracle Dataabse の仕様確認

WITH src AS (
    SELECT
        '2020-01-01' AS "date_str_yyyy-mm-dd"
        ,'20200102' AS "date_str_yyyymmdd"
        ,'2020/01/03' AS "date_str_yyyy/mm/dd"
    FROM
        dual
)
SELECT
    "date_str_yyyy-mm-dd" AS date_str
    ,CAST("date_str_yyyy-mm-dd" AS date) date_col
FROM
    src
UNION ALL
SELECT
    "date_str_yyyymmdd"
    ,CAST("date_str_yyyymmdd" AS date) date_col
FROM
    src
UNION ALL
SELECT
    "date_str_yyyy/mm/dd"
    ,CAST("date_str_yyyy/mm/dd" AS date) date_col
FROM
    src

image.png

Database の仕様確認

%sql
WITH src AS (
    SELECT
        '2020-01-01' AS `date_str_yyyy-mm-dd`
        ,'20200102' AS `date_str_yyyymmdd`
        ,'2020/01/03' AS `date_str_yyyy/mm/dd`
)
SELECT
    `date_str_yyyy-mm-dd` AS date_str
    ,CAST(`date_str_yyyy-mm-dd` AS TIMESTAMP) date_col
FROM
    src
UNION ALL
SELECT
    `date_str_yyyymmdd`
    ,CAST(`date_str_yyyymmdd` AS TIMESTAMP) date_col
FROM
    src
UNION ALL
SELECT
    `date_str_yyyy/mm/dd`
    ,CAST(`date_str_yyyy/mm/dd` AS TIMESTAMP) date_col
FROM
    src
;

Databricks での対応方法

%sql
WITH src AS (
    SELECT
        '2020-01-01' AS `date_str_yyyy-mm-dd`
        ,'20200102' AS `date_str_yyyymmdd`
        ,'2020/01/03' AS `date_str_yyyy/mm/dd`
)
SELECT
    `date_str_yyyy-mm-dd` AS date_str
    ,CAST(`date_str_yyyy-mm-dd` AS date) date_col
FROM
    src
UNION ALL
SELECT
    `date_str_yyyymmdd`
    ,try_to_timestamp(`date_str_yyyymmdd`, 'yyyyMMdd') date_col
FROM
    src
UNION ALL
SELECT
    `date_str_yyyy/mm/dd`
    ,try_to_timestamp(`date_str_yyyy/mm/dd`, 'yyyy/MM/dd') date_col
FROM
    src
;

image.png

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0