在上家公司做理赔数据迁移的时候,遇到一个问题:
理赔的任务都是有时间节点的,有的是到天的,有的是到小时的,有的是到分钟的等等。具体的业务是这样的:算一个地区前30天的理赔金额(口径是到分钟的),用的是date_add计算的,导致数据多了300多万
问题所在:
在Hive中,date_add
函数用于将指定的天数添加到给定的日期上,从而得到一个新的日期。如果日期是代时分秒的:'2024-10-23 14:12:30',用date_add加一天得到的是:2024-10-24,时分秒没有了,所以会导致统计出的金额有问题。
如下图所示:
解决方案:使用interval解决
同理,date_add('2024-10-23 14:12:30',-30) 换成:'2024-10-23 14:12:30' - interval 30 day就可以解决了。