SELECT
name,
start_time,
TIME(cancelled_date) AS cancelled_time,
TIMEDIFF(start_time, TIME(cancelled_date)) AS difference
FROM
bookings
我正试图从数据库中获取一个预订列表,这些预订在不到一小时的通知时被取消。开始时间和取消时间都是TIME格式,我知道时间戳会使这更容易。所以上面我已经计算了两个值之间的时间差,现在需要添加一个WHERE子句来限制它只有那些差异小于1:00:00的记录。显然这不是一个数字,这是一个时间,所以一点点的数学就不会这样做。
start_time是TIME
cancelled_date是DATETIME,但我在查询中将其转换为TIME,然后计算cancelled_time和差异。
有人可以帮忙吗?我会非常感激。
答案 0 :(得分:2)
我倾向于通过在通知中添加和小时这样做:
WHERE start_time > date_add(cancelled_date, interval 1 hour)
我无法从问题中找出正确的逻辑,因为您的列名与描述不符。
在这种情况下,减法或进行比较的性能类似。但是,如果你有一个常数而不是cancelled_date
,那么就会有所不同。以下内容:
WHERE start_time < date_add(now(), interval -1 hour)
允许引擎使用start_time
上的索引。
答案 1 :(得分:1)
您可以使用having difference<time('1:00')