题解 | 删除记录(一)日期差计算
删除记录(一)
https://www.nowcoder.com/practice/d331359c5ca04a3b87f06b97da42159c
delete from exam_record where timestampdiff(minute,start_time,submit_time) < 5 and score < 60;
TIMESTAMPDIFF是MySQL官方支持的日期差计算函数
直接用日期相减的写法不符合MySQL的语法逻辑
TIMESTAMPDIFF:合法的日期差计算
DELETE FROM exam_record WHERE TIMESTAMPDIFF(minute,start_time,submit_time)<5 and score < 60;
TIMESTAMPDIFF是MySQL内置函数,专门用于计算两个日期/时间之间的差值,语法为:TIMESTAMPDIFF(单位, 开始时间, 结束时间)
这里minute指定单位为“分钟”,函数会直接返回submit_time - start_time的分钟数(整数),和5比较是整数 vs 整数,逻辑合法,执行成功。
示例:若start_time='2021-09-01 22:00:00',submit_time='2021-09-01 22:03:00',函数返回3,3<5为TRUE。
数仓开发延伸(贴合你的工作场景)
在你常用的Hive/MaxCompute中,日期差计算的语法和MySQL不同,补充对应写法避免混淆:
MySQL |
|
Hive/MaxCompute |
|
总结
TIMESTAMPDIFF是MySQL专门计算日期差的函数,返回值类型和比较值匹配,逻辑合法;- MySQL不支持日期直接相减得到时间差,且
5/(24*60)的换算逻辑不适用于这种错误的相减方式; - 记住:MySQL中计算两个时间的差值,优先用
TIMESTAMPDIFF(单位, 开始, 结束),这是最通用、不易出错的写法。
牛客网题目 文章被收录于专栏
做题心得,记录下来,供自己学习
查看14道真题和解析