将yyyymmdd格式的int类型转换为presto/hive中的日期周

mwkjh3gx  于 2021-04-09  发布在  Hive
关注(0)|答案(3)|浏览(995)

我有一列日期 "yyyymmdd",int类型。我想转换为 "日期周",如 "星期一"。

lrpiutwd

lrpiutwd1#

假设你想在presto中做这件事,你可以把cast组合成varchar,然后parse_datetime,因为parse_datetime返回一个时区时间戳,你需要使用date把解析的值修剪成日期部分。

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

vuv7lop32#

试试下面的hive

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

这将返回Sunday作为输出。

1dkrff03

1dkrff033#

下面这个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

相关问题