Hive中获取上月第一天及统计对应数据量的问题求助
Hive统计上月第一天之后的数据条数解决方案
原SQL的问题
- 函数拼写错误:
unix_tmestamp是笔误,正确函数名为unix_timestamp - 逻辑完全偏离需求:原SQL仅对当前行的
dt做了时间戳转换再转回日期的无效操作,没有计算上月第一天的逻辑
正确SQL写法
根据dt列的数据类型,分两种情况处理:
情况1:dt为DATE类型
SELECT COUNT(*) FROM my_table WHERE dt > trunc(add_months(current_date(), -1), 'MM');
情况2:dt为字符串类型(格式为yyyyMMdd)
SELECT COUNT(*) FROM my_table WHERE dt > date_format(trunc(add_months(current_date(), -1), 'MM'), 'yyyyMMdd');
逻辑说明
add_months(current_date(), -1):获取当前日期的上月日期trunc(..., 'MM'):将日期截断到当月第一天,即得到上月第一天date_format(..., 'yyyyMMdd'):如果dt是字符串格式,把日期类型的上月第一天转成对应字符串格式,保证类型匹配可以比较
内容的提问来源于stack exchange,提问作者SASUSER
相关产品推荐
相关产品推荐

