【发布时间】:2020-11-22 18:23:55
【问题描述】:
我有日期列“YYYYMMDD”,int 类型。我想转换为“星期一”之类的“日”。
【问题讨论】:
-
您好,请阅读:how-to-ask 并编辑您的帖子。
我有日期列“YYYYMMDD”,int 类型。我想转换为“星期一”之类的“日”。
【问题讨论】:
下面这个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
【讨论】:
在 hive 中尝试以下操作
select from_unixtime(unix_timestamp(cast('20200802' as string),'yyyyMMdd'),'EEEE') ;
这将返回 Sunday 作为输出。
【讨论】:
假设您想在 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
【讨论】: