我在mysql rdbms中的SQL查询中有以下行
abs(timediff(tableA.enrollment_date, tableB.enrollment_date)) < 30 AND
这意味着时间之间的差异不应比30 seconds
更多。
MySQL的文档告诉您
timediff()返回的结果仅限于允许的范围 时间值。另外,您可以使用任何一个功能 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