带有 DATEDIFF 的 MySQL 查询

标签 mysql sql datediff

我正在尝试构建一个查询,该查询将比较 2 个字段(start_time 和 end_date)从和到特定日期加载记录。

SELECT start_time
,end_time
,DATEDIFF(end_time, start_time) AS DiffDate
FROM my_tbl
WHERE start_time >= '2015-04-27 00:00:00'
AND end_time <= '2015-04-28 00:00:00'
AND end_time >= '2015-04-27 00:00:00'
AND DiffDate < 100
LIMIT 1000;

不幸的是,DiffDate 总是返回 0。 理想的情况是在插入 end_time 时计算 start_time 和 end_time 之间的差异,但我无法对数据库进行任何更改。 我在这里做错了什么?即使 DiffDate 正常工作,它也会被视为一个好的解决方案吗?

最佳答案

从 where 子句中的条件看来,您正在尝试获取同一日期的数据,但是在同一天使用 datediff 总是会得到 0

mysql> select datediff('2015-04-27 12:00:00','2015-04-27 00:00:00') as diff ;
+------+
| diff |
+------+
|    0 |
+------+

1 row in set (0.03 sec)

您可能需要其他计算方式,例如使用 timestampdiff

mysql> select timestampdiff(minute ,'2015-04-27 00:00:00','2015-04-27 12:00:00') as diff ;
+------+
| diff |
+------+
|  720 |
+------+
1 row in set (0.00 sec)

此外,您在不允许的 where 子句中使用别名,您必须将其更改为 having 子句

SELECT start_time
,end_time
,timestampdiff(minute,start_time,end_time) AS DiffDate
FROM my_tbl
WHERE start_time >= '2015-04-27 00:00:00'
AND end_time <= '2015-04-28 00:00:00'
AND end_time >= '2015-04-27 00:00:00'
having DiffDate < 100
LIMIT 1000;

关于带有 DATEDIFF 的 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29937400/

相关文章:

java - JPA自动增量的差异

java - 启动时的 JPA 自定义脚本

SQL Server 2012 : DATEDIFF function in terms of years, 天和月

java - 如何使用Ebean自动DDL生成定义mysql引擎或默认字符集

php - SQL-如何将B表的多个id存储到A表中?

php - SQL返回错误结果

php - 选择查询的顺序在准备好的语句中不起作用

sql - 一条 SQL 语句中的多个计算值

mysql - DATEDIFF() 函数

mysql - wso2 治理注册表在使用 mysql 设置时给出异常