如何检查TIME_TO_SEC的where子句中的null(TIMEDIFF值?

时间:2012-08-22 10:42:17

标签: mysql

我们可以使用where子句运行mysql查询

TIME_TO_SEC(TIMEDIFF('2012-08-22 06:25:12',lastEventTime)) >70

我们现在需要检查的是null值,其中试图放置= null但是没有显示?需要什么?

示例查询如下,谢谢你的工作。我现在必须将下一个问题编入lastEvenTime列的索引吗?

SELECT 
    tblTimeLog.timeLogID,
    TIME_TO_SEC(TIMEDIFF('2012-08-22 06:25:12',lastEventTime)) As timeDifference
FROM tblTimeLog
WHERE tblTimeLog.timeID = 2209
And (TIME_TO_SEC(TIMEDIFF('2012-08-22 06:25:12',lastEventTime)) IS NULL  
  OR TIME_TO_SEC(TIMEDIFF('2012-08-22 06:25:12',lastEventTime)) > 100)

1 个答案:

答案 0 :(得分:2)

你可以替换这个

And (TIME_TO_SEC(TIMEDIFF('2012-08-22 06:25:12',lastEventTime)) IS NULL  
  OR TIME_TO_SEC(TIMEDIFF('2012-08-22 06:25:12',lastEventTime)) > 100)

and (lastEventTime IS NULL  
OR TIME_TO_SEC(TIMEDIFF('2012-08-22 06:25:12',lastEventTime)) > 100)

或使用具有适当选择默认值的coalesce(如果是NULL):

and TIME_TO_SEC(TIMEDIFF('2012-08-22 06:25:12',
    coalesce(lastEventTime, '1900-01-01')) > 100

虽然合并位仅与WHERE子句相关;对于SELECT部分,如果lastEventTime为NULL,则会获得NULL