【问题标题】:MySQL getting column using DATEDIFF inside IFMySQL 在 IF 中使用 DATEDIFF 获取列
【发布时间】:2020-10-06 05:39:38
【问题描述】:

我正在尝试使用 DATEDIFF 和 IF 函数获取“按时返回”列

SELECT
IF(DATEDIFF(day, rental.rental_date, rental.return_date) <= film.rental_duration, 
   (COUNT(rental.rental_id) AS 'Returned On Time'))
FROM rental, film

但我得到的只是错误,我真的不明白 DATEDIFF 究竟是如何工作的,我什至不知道我是否可以在 IF 函数中使用 COUNT

提前谢谢大家!!!

【问题讨论】:

  • 该查询有很多错误。请解释您尝试做什么。

标签: mysql datediff


【解决方案1】:

您不能在IF 的结果中使用聚合函数。 IF 表达式被应用于单行,聚合结果没有意义。

您还缺少两个表之间的连接条件。

您用于DATEDIFF() 的参数不正确,它们更适合TIMESTAMPDIFF。 DATEDIFF() 只需要两个参数,后面的应该是第一个。

我想你想要的是这样的:

SELECT SUM(TIMESTAMPDIFF(day, rental.rental_date, rental.return_date) <= film.rental_duration) AS returned_on_time
FROM rental 
JOIN film ON rental.film_id = film.id

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-20
    • 2018-08-12
    • 2013-03-21
    • 2020-04-04
    • 1970-01-01
    • 2021-07-16
    相关资源
    最近更新 更多