我在MySQL RDBMS中的SQL查询中有以下行

abs(timediff(tableA.enrollment_date, tableB.enrollment_date)) < 30 AND


这意味着时间之间的差异不应大于30 seconds

MySQL的Documentation表示


  TIMEDIFF()返回的结果限于所允许的范围
  TIME值。另外,您可以使用任何一个功能
  TIMESTAMPDIFF()和UNIX_TIMESTAMP(),它们都返回整数。


mysql> SELECT TIMEDIFF('2000:01:01 00:00:00',
    ->                 '2000:01:01 00:00:00.000001');
        -> '-00:00:00.000001'
mysql> SELECT TIMEDIFF('2008-12-31 23:59:59.000001',
    ->                 '2008-12-30 01:01:01.000002');
        -> '46:58:57.999999'


根据abs()我看到


  此功能可以安全地与BIGINT值一起使用。


但是现在我对此是否正确表示怀疑。

问题:如何检查两个DATETIME字段的绝对值之差是否小于30秒?

最佳答案

一种方法是:

(tableA.enrollment_date > tableB.enrollment_date - interval 30 second AND
 tableA.enrollment_date < tableB.enrollment_date + interval 30 second
)


另一种方法是使用to_seconds()

abs(to_seconds(tableA.enrollment_date) - to_seconds(tableB.enrollment_date)) < 30

关于mysql - 如何检查两个DATETIME字段差的绝对值是否小于30秒,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46281541/

10-10 06:37