如何在Presto/Hive中将日期格式YYYY-MM-DD转换为整数YYYYMMDD?

Chr*_*ris 6 sql hadoop hive date presto

如何在Presto/Hive CONVERT中将格式的日期转换YYYY-MM-DD为整数YYYYMMDD

我试图将下面的列表转换为YYYYMMDD整数

WITH  all_dates  as (SELECT
    CAST(date_column AS DATE) date_column
FROM
    (VALUES
        (SEQUENCE(FROM_ISO8601_DATE('2017-07-01'),
                  FROM_ISO8601_DATE('2017-11-15'),
                  INTERVAL '1' DAY)
        )
    ) AS t1(date_array)
CROSS JOIN
    UNNEST(date_array) AS t2(date_column)
    )
Run Code Online (Sandbox Code Playgroud)

我试过这样的东西,但它不起作用

   SELECT
   CAST(
      CAST(year(date_column) AS VARCHAR(4)) +
      right('0' + CAST(month(date_column) AS VARCHAR(2)), 2) +
      right('0' + CAST(day(date_column) AS VARCHAR(2)), 2) 
   AS DATETIME)
   FROM all_dates
Run Code Online (Sandbox Code Playgroud)

lef*_*oin 8

你也可以使用date_format功能:

hive> select cast(date_format('2017-07-01','yyyyMMdd') as int);
OK
20170701
Run Code Online (Sandbox Code Playgroud)


All*_*lan 6

如果您只需要将日期YYYY-MM-DD转换为整数YYYYMMDD为什么不尝试先从"-"日期的字符串表示中删除所有出现的,然后再使用类似的方法将结果转换为 int ?

cast(regexp_replace(str_column,'-','') as int)
Run Code Online (Sandbox Code Playgroud)