我需要计算周日的平均销售额。销售日期(时间戳)列的值为:
2012-01-01 09:00:00
2012-01-01 09:00:00
2012-01-01 09:00:00
...........
我已经使用to_date()提取了日期部分。现在如何从这个日期中获取星期几(例如星期日)在Hive中?请指导。
您可以使用unix_timestamp和from_unixtime UDF的组合。
from_unixtime(unix_timestamp(col), 'EEEE')
如果您查看SimpleDateFormat的文档,您可以看到"EEEE"代表星期几的全名。"EEE"则表示缩写版,例如 "Sun" 或 "Mon"。
from_unixtime
接受int格式的第一个参数:date_format(from_unixtime(col(timestampinseconds),'yyyy-MM-dd'),'EEEE')
select date_format(from_unixtime(1531372789,'yyyy-MM-dd'),'EEEE');
输出:
Thursday
我希望它能够达到您的目的。
仅供参考..您可以选择一个低于数据中最小日期的日期(例如星期日),格式为'yyyy-mm-dd'。使用DATEDIFF()函数来计算数据中日期值(格式为'yyyy-mm-dd')与该低日期之间的差异。计算DATEDIFF输出的模7。这将是星期日为0,星期一为1,以此类推..
选择 extract(dayofweek from from_unixtime(unix_timestamp));