【问题标题】:Calculating time difference returns null [closed]计算时差返回 null [关闭]
【发布时间】:2022-01-21 01:59:01
【问题描述】:

我正在尝试从帖子中选择所有内容并计算您与发布时间和我正在使用的时间差

SELECT FLOOR(TIME_TO_SEC(TIMEDIFF(CURRENT_TIMESTAMP, post.created) / 60)) 
FROM post

作为我的查询将其计算到分钟,但是当我执行此查询时,一些记录返回 null,我不知道这是为什么

2021-12-16 21:31:09查询不适用于该日期

2021-12-18 17:01:37 但对于这个它确实如此

有人知道解决办法吗?

【问题讨论】:

  • 这工作SELECT FLOOR(TIME_TO_SEC(TIMEDIFF(CURRENT_TIMESTAMP, '2021-12-16 21:31:09')) / 60);
  • 你我认为) 有点混乱,所以它只是一个错字

标签: mysql sql


【解决方案1】:

基于this fiddle,它似乎在TIME_TO_SEC() 调用中失败了:

SELECT FLOOR(TIME_TO_SEC(TIMEDIFF(CURRENT_TIMESTAMP, post.created) / 60)) as result,
   timediff(current_timestamp, post.created) as step1,
   TIMEDIFF(CURRENT_TIMESTAMP, post.created) / 60 as step2,
   TIME_TO_SEC(TIMEDIFF(CURRENT_TIMESTAMP, post.created) / 60) as step3
FROM post

结果:

result step1 step2 step3
null 45:09:30 7515.5000 null
151 01:39:02 231.7000 151
null -46:20:58 -7700.9667 null
null 838:59:59 139765.9833 null

这是你应该能够自己进行的调试步骤:/

但是,如上所述缩小问题范围后仍然需要帮助是合理的,考虑到这一点,这可能是括号放错的结果。似乎您想在TIME_TO_SEC() 调用之后除以 60

FLOOR(TIME_TO_SEC(TIMEDIFF(CURRENT_TIMESTAMP, post.created)) / 60)

【讨论】:

  • 我花了一个多小时才发现自己做错了什么,非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-05
  • 2023-03-19
  • 2021-12-04
  • 2015-08-20
  • 1970-01-01
  • 2014-08-15
相关资源
最近更新 更多