2022-04-17
阅读量:
724
敏捷算法班-数据库-商业情景应用情景8疑问与个人解决方法
题目
Bank公司的贷款风险分析人员希望得到贷款客户在发放贷款前一年的交易数据。
(经同学启发、结果实例和老师的解法,我认为题目中的‘客户’应该为‘账号’,即account。同时,有一张客户表记录了客户信息,如果要针对 ‘客户’ 查询结果则另有解法。)
疑问
有些符合要求的记录被过滤掉了,初步认定为日期计算有问题,不加连接条件的查询结果如下,共查询到190103条记录:从图中可以看出,如果对贷款日期和交易日期不加处理,它们的数据类型为date,直接相减会出现一个不明含义的数值,比如,'1994-01-05' 和 '1993-02-26' 相减返回结果为9879。
测试
测试运算方式:
可以看出这两个日期实际相差不到一年,添加连接条件后,这些结果都被过滤掉了,日期计算依然不是间隔天数:
解决方案
计算两日期的间隔天数有下面3种方式:
SELECT DATEDIFF('1994-01-05', '1993-02-26');
SELECT TIMESTAMPDIFF(day, '1993-02-26', '1994-01-05'); -- 和DATEDIFF不同之处是要把小日期放在前
SELECT TO_DAYS('1994-01-05') - TO_DAYS('1993-02-26');
所以我的解法是:
参考结果:






评论(0)


暂无数据
推荐帖子
0条评论
0条评论
0条评论