我需要两个日期之间的天数、小时数和分钟数的差异。当前日期 (NOW()) 和结束日期。我需要它们在两个不同的查询中,它们的工作方式略有不同。
第一个需要以以下格式将它们作为单列返回:
-------------------------
| time_left |
-------------------------
| x days x hours x min |
-------------------------
Run Code Online (Sandbox Code Playgroud)
第二个需要在三个单独的列中返回它们,确保如果 end_date 超过当前日期,则每列返回 0:
-------------------------------------------
| days_left | hrs_left | min_left |
-------------------------------------------
| x | x | x |
-------------------------------------------
Run Code Online (Sandbox Code Playgroud)
我有一个解决方案来解决所有这些问题,但这很糟糕。我确信有人至少找到了一种相对干净的方法来解决这个问题。先谢谢了!
小智 5
之前的那个不准确,显示了一天零三个小时,而应该是一小时。
这个在任何时候都应该是准确的
SELECT
@diff:=ABS( UNIX_TIMESTAMP("2014-05-09 21:24:25") - UNIX_TIMESTAMP() ) ,
CAST(@days := IF(@diff/86400 >= 1, floor(@diff / 86400 ),0) AS SIGNED) as days,
CAST(@hours := IF(@diff/3600 >= 1, floor((@diff:=@diff-@days*86400) / 3600),0) AS SIGNED) as hours,
CAST(@minutes := IF(@diff/60 >= 1, floor((@diff:=@diff-@hours*3600) / 60),0) AS SIGNED) as minutes,
CAST(@diff-@minutes*60 AS SIGNED) as seconds;
Run Code Online (Sandbox Code Playgroud)
解释:
| 归档时间: |
|
| 查看次数: |
6576 次 |
| 最近记录: |