• 一百八十八、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执行后应该对结果进行检查,不同的情形说不定会有不同的结果!

  • 相关阅读:
    MapStruct代码生成器实现对象转换
    springboot学校快递站点管理系统的设计与实现毕业设计源码111544
    实现 LRU 缓存算法
    如何使用ArcGIS Pro将等高线转DEM
    大语言模型LLM分布式框架:PyTorch Lightning框架(LLM系列14)
    JAVA核心类-String
    WPF Image控件鼠标双击事件的实现
    chromedriver下载与安装方法
    leetCode 62.不同路径 动态规划 + 空间复杂度优化
    链表OJ(2)
  • 原文地址:https://blog.csdn.net/tiantang2renjian/article/details/133322641