【问题标题】:Convert YYYYMMDD to day in presto/hive在 presto/hive 中将 YYYYMMDD 转换为天
【发布时间】:2020-11-22 18:23:55
【问题描述】:

我有日期列“YYYYMMDD”,int 类型。我想转换为“星期一”之类的“日”。

【问题讨论】:

  • 您好,请阅读:how-to-ask 并编辑您的帖子。

标签: sql hive presto


【解决方案1】:

下面这个sql可能对你有帮助。

hive>
select from_unixtime(unix_timestamp(cast(20200802 as string),'yyyyMMdd'),'u') as weekdaynumber,
       CASE from_unixtime(unix_timestamp(cast(20200802 as string),'yyyyMMdd'),'u')
           WHEN 1 THEN 'Monday'
           WHEN 2 THEN 'Tuesday'
           WHEN 3 THEN 'Wedneday'
           WHEN 4 THEN 'Thursday'
           WHEN 5 THEN 'Friday'
           WHEN 6 THEN 'Saturday'
           WHEN 7 THEN 'Sunday'
END AS day_of_week

OK
7       Sunday

【讨论】:

    【解决方案2】:

    在 hive 中尝试以下操作

    select from_unixtime(unix_timestamp(cast('20200802' as string),'yyyyMMdd'),'EEEE') ;
    

    这将返回 Sunday 作为输出。

    【讨论】:

      【解决方案3】:

      假设您想在 Presto 中执行此操作,您可以将 cast 组合到 varchar 然后 parse_datetime。由于parse_datetime 返回的是timestamp with time zone,因此您需要使用date 将解析后的值修剪为日期部分。

      presto> SELECT date(parse_datetime(CAST(20200801 AS varchar), 'yyyyMMdd'));
         _col0
      ------------
       2020-08-01
      

      【讨论】:

        猜你喜欢
        • 2018-04-28
        • 1970-01-01
        • 2011-08-29
        • 2021-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-11
        • 1970-01-01
        相关资源
        最近更新 更多