Sql 如何使用星期六作为周结束日期来计算蜂巢中的周结束日期?

Sql 如何使用星期六作为周结束日期来计算蜂巢中的周结束日期?,sql,date,hadoop,hive,dayofweek,Sql,Date,Hadoop,Hive,Dayofweek,我有一个场景,我想计算一周的结束日期(给定一个日期),考虑到周末在周六。我读了一些答案,但没有找到解决办法,所以我把我的方法贴在这里。希望它能帮助像我这样的人 select TransactionDateTime, from_unixtime(unix_timestamp(TransactionTime),'u') as wkday, date_add (TransactionDateTime, case when from_unixtime(unix_timestamp(Transactio

我有一个场景,我想计算一周的结束日期(给定一个日期),考虑到周末在周六。我读了一些答案,但没有找到解决办法,所以我把我的方法贴在这里。希望它能帮助像我这样的人

select 
TransactionDateTime,
from_unixtime(unix_timestamp(TransactionTime),'u') as wkday,
date_add (TransactionDateTime,
case when from_unixtime(unix_timestamp(TransactionTime),'u')=7 then 6 
when from_unixtime(unix_timestamp(TransactionTime),'u')=1 then 5
when from_unixtime(unix_timestamp(TransactionTime),'u')=2 then 4
when from_unixtime(unix_timestamp(TransactionTime),'u')=3 then 3
when from_unixtime(unix_timestamp(TransactionTime),'u')=4 then 2
when from_unixtime(unix_timestamp(TransactionTime),'u')=5 then 1
when from_unixtime(unix_timestamp(TransactionTime),'u')=6 then 0
end) as UsageWkEndDt
from TransTable;

请删除您的回答您没有给出实际输入格式的示例,也没有给出预期输出的示例,例如,“给定一个字符串'2016-03-03 21:05'指向一个星期四,我期望一个字符串'2016-03-05'即下一个或同等的星期六”,并且您没有给出配置单元版本——从V1.2.0开始,您拥有内置函数
下一天(字符串开始日期,字符串星期几)
cf.关于您对预期日期格式的疑问-标准日期时间格式(yyyy-MM-dd hh:MM:ss)甚至是标准日期(yyyy-MM-dd)如果我们有一些不同的格式,我们可以在配置单元中使用unix_时间戳方法轻松处理。这种方法适用于配置单元1.0.0,因为最新的EMR版本(EMR-4.3.0)支持此版本
select 
TransactionDateTime,
from_unixtime(unix_timestamp(TransactionTime),'u') as wkday,
date_add (TransactionDateTime,
case when from_unixtime(unix_timestamp(TransactionTime),'u')=7 then 6 
when from_unixtime(unix_timestamp(TransactionTime),'u')=1 then 5
when from_unixtime(unix_timestamp(TransactionTime),'u')=2 then 4
when from_unixtime(unix_timestamp(TransactionTime),'u')=3 then 3
when from_unixtime(unix_timestamp(TransactionTime),'u')=4 then 2
when from_unixtime(unix_timestamp(TransactionTime),'u')=5 then 1
when from_unixtime(unix_timestamp(TransactionTime),'u')=6 then 0
end) as UsageWkEndDt
from TransTable;