题解 | 删除记录(一)日期差计算

删除记录(一)

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',函数返回33<5TRUE

数仓开发延伸(贴合你的工作场景)

在你常用的Hive/MaxCompute中,日期差计算的语法和MySQL不同,补充对应写法避免混淆:

MySQL

TIMESTAMPDIFF(minute, start_time, submit_time)

Hive/MaxCompute

UNIX_TIMESTAMP(submit_time) - UNIX_TIMESTAMP(start_time) > 5*60

总结

  1. TIMESTAMPDIFF是MySQL专门计算日期差的函数,返回值类型和比较值匹配,逻辑合法;
  2. MySQL不支持日期直接相减得到时间差,且5/(24*60)的换算逻辑不适用于这种错误的相减方式;
  3. 记住:MySQL中计算两个时间的差值,优先用TIMESTAMPDIFF(单位, 开始, 结束),这是最通用、不易出错的写法。

牛客网题目 文章被收录于专栏

做题心得,记录下来,供自己学习

全部评论

相关推荐

钱嘛数字而已:拖拉机被发明出来之后,就不需要农民了吗?农民还是需要的,但不需要这么多了,另外对农民的要求也变高了,需要会开拖拉机。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务