MySQL 如果差异小于 0,则选择 0,否则选择差异

标签 mysql

我想获得 StartDate 和 EndDate 之间的差值,但如果差值小于 0,我需要值 0(EndDate 可能在 StartDate 之前)。有没有办法在不重复 ROUND() 表达式的情况下在 SELECT 中执行此操作?

SELECT StartDate, EndDate, 
IF(ROUND(TIMESTAMPDIFF(SECOND, StartDate, EndDate)/86400, 1) < 0, 0, ROUND(TIMESTAMPDIFF(SECOND, StartDate, EndDate)/86400, 1)) AS Duration
FROM table
WHERE StartDate <= '2016-06-02' AND EndDate >= '2016-06-01';

最佳答案

只需使用 GREATEST()得到 0 和差值中的较大者。

SELECT StartDate, EndDate, 
GREATEST(ROUND(TIMESTAMPDIFF(SECOND, StartDate, EndDate)/86400, 1), 0) AS Duration
FROM table
WHERE StartDate <= '2016-06-02' AND EndDate >= '2016-06-01';

关于MySQL 如果差异小于 0,则选择 0,否则选择差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37056778/

相关文章:

php - 获取两个日期时间之间的查询

php - Mysql INSERT INTO 和 UPDATE 无法正常工作

mysql - 在 MYSQL C API 中处理 SELECT 查询结果时出现问题

mysql - 如何让 MySQL 将第二个表的查询结果存储在第一个表中?

mysql - Spring Boot Jdbc Flyway 版本文件名 "V1__script.sql"不起作用,而是使用 "V1_file.sql"重命名文件正在起作用

mysql - 查询删除表中原来输入的所有数据并插入新数据

mysql - SQL查询可以做到这一点吗?

MySQL 选择需要很长时间

php - MySql语法错误,插入

MySQL 建表错误 #1005