一百八十八、Hive——HiveSQL查询表中的日期是星期几(亲测,附截图)

一、目的

指标需要查询以工作日和周末维度的数据统计,因此需要根据数据的日期判断这一天属于星期几,周一到周五为工作日,周六到周日为周末

二、SQL查询

(一)SQL语句

select
     day,
     case when pmod(datediff(create_time,'2023-05-02') + 1,7) = 1 then '周一'
    when pmod(datediff(create_time,'2023-05-02') + 1,7) = 2 then '周二'
    when pmod(datediff(create_time,'2023-05-02') + 1,7) = 3 then '周三'
    when pmod(datediff(create_time,'2023-05-02') + 1,7) = 4 then '周四'
    when pmod(datediff(create_time,'2023-05-02') + 1,7) = 5 then '周五'
    when pmod(datediff(create_time,'2023-05-02') + 1,7) = 6 then '周六'
    else '周日' end as week_time
from hurys_dc_dwd.dwd_statistics
group by day, case when pmod(datediff(create_time,'2023-05-02') + 1,7) = 1 then '周一'
    when pmod(datediff(create_time,'2023-05-02') + 1,7) = 2 then '周二'
    when pmod(datediff(create_time,'2023-05-02') + 1,7) = 3 then '周三'
    when pmod(datediff(create_time,'2023-05-02') + 1,7) = 4 then '周四'
    when pmod(datediff(create_time,'2023-05-02') + 1,7) = 5 then '周五'
    when pmod(datediff(create_time,'2023-05-02') + 1,7) = 6 then '周六'
    else '周日' end;

(二)SQL语句查询结果

今天是2023年9月26日,周二!

(三)注意点

2023-05-02为任意一天的周二,不是选周一或者周日,这个可以自行验证!

-----------------------------------------20240201更新-----------------------------------------

本来以为SQL里日期选择任一周二即可,结果发现这是在没有执行调优语句前提下才有用

如下图所示,没有执行Hive调优

在这种情形下,以前的周二2023-05-02是有用的,今天是2024-02-01,周四

但是,如果执行Hive调优后,比如

set hive.vectorized.execution.enabled=false;

执行调优后,如果还是SQL里还是周二,就查询结果有问题

结果是2024-02-01,周三,但是今天却是周四!!!!

因此,在执行Hive调优后,必须将以前的周二2023-05-02改为周一2023-05-01

所以,在执行Hive调优后,SQL里的日期应该为周一

最后,总结一下,SQL执行后应该对结果进行检查,不同的情形说不定会有不同的结果!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天地风雷水火山泽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值