Преобразовать ГГГГММДД в ​​день в presto / hive - PullRequest
0 голосов
/ 02 августа 2020

У меня есть столбец даты «ГГГГММДД», тип int. Я хочу преобразовать в "день", например, "понедельник".

Ответы [ 3 ]

1 голос
/ 02 августа 2020

Попробуйте следующее в кусте

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

, на выходе будет возвращено Sunday.

1 голос
/ 02 августа 2020

это ниже 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

0 голосов
/ 02 августа 2020

Если вы хотите сделать это в 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
...