![[Hive SQL] 条件查询和时间值相关的坑,第1张 [Hive SQL] 条件查询和时间值相关的坑,第1张](/aiimages/%5BHive+SQL%5D+%E6%9D%A1%E4%BB%B6%E6%9F%A5%E8%AF%A2%E5%92%8C%E6%97%B6%E9%97%B4%E5%80%BC%E7%9B%B8%E5%85%B3%E7%9A%84%E5%9D%91.png)
在工作中发现几个容易踩雷的问题。假设我们现在手上有个数据集,其中时间字段A格式为yyyy-MM-dd HH:mm:ss,时间字段B为A的13位毫秒时间戳格式。
假设我现在要查到2021年12月31日为止的数据,下面是不同查询方式输出的结果(仅列出查询条件)
- A <=
错误示例:where A <= '2021-12-31'
此查询方式,右边相当于只取到’2021-12-31 00:00:00’,也就是说并未包含进入31号除0时0分0秒外的数据
正确示例:where A < '2022-01-01'A between and
错误示例:where A between '2021-01-01' and '2021-12-31'
此查询方式同上,仅取到 ‘2021-12-31 00:00:00’
正确示例:where A between '2021-01-01' and '2022-01-01'B转换为yyyy-MM-dd
正确示例:from_unixtime(cast(B/1000 as bigint), 'yyyy-MM-dd') <= '2021-12-31'
所有的时间戳都转化为yyyy-MM-dd的格式,即使是2021-12-31 23:59:59也会转化为2021-12-31,所以能正确取到
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)