我有日期列"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
在蜂窝中尝试以下操作
select from_unixtime(unix_timestamp(cast('20200802' as string),'yyyyMMdd'),'EEEE') ;
这将返回CCD_ 1作为输出。
假设您想在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