データベースでnullになる可能性のあるDATETIME値「some_date」があります。次のクエリを試してみると、日付がnullの行には何も返されません。
SELECT *
FROM tabel
WHERE DATE_ADD(some_date, INTERVAL some_seconds SECOND) < NOW()
some_dateがnullの場合でもDATE_ADD()がDATEを生成するように、このクエリを編集できますか?
COALESCEを使用して、NULLの日付を別の日付に変換できます。次に例を示します。
select *
from table
where date_add(coalesce(some_date, now()), interval some_seconds second) < now()
COALESCEは、最初のNULL以外の引数を返します。
COALESCE(value, ...)
リスト内の最初の非NULL値を返します。非NULL値がない場合は、NULLを返します。
したがって、NULLの代わりに使用する日付を決定する必要がありますsome_date
。
NULLの置換some_date
が過去に十分に進んでいて、テストが常に合格する場合は、次を使用できます。
where some_date is null
or date_add(some_date, interval some_seconds second) < now()
常に失敗する場合は、次のようにします。
where some_date is not null
and date_add(some_date, interval some_seconds second) < now()
次のクエリを使用する方がおそらく少し明確です。
SELECT *
FROM tabel
WHERE some_date IS NULL OR DATE_ADD(some_date, INTERVAL some_seconds SECOND) < NOW()