latest_date
を3つの日付フィールドの間にあるデータベースから取得したいと考えています。 私は次のクエリを使用していますが、私の要件ではOKではありません。 3日付フィールドを比較する方法latest_date
を取得するには?私はあなたがすべての間での最新のをしたい場合はこの1つはあなたに単一の行Mysql 3つのdatetimeフィールドを比較する
のための最新の日付を与える必要がありますGREATEST()
機能
GREATEST(cc.updated, af.created, e.updated) AS latest_date
を使用することができると思う
SELECT DISTINCT e.id, MAX(cc.updated) AS clinicComment_date, MAX(af.created) AS attenderInfo_created, e.updated AS event_updated,
(
CASE
WHEN MAX(cc.updated) > MAX(af.created)
THEN MAX(cc.updated)
WHEN MAX(cc.updated) < MAX(af.created)
THEN MAX(af.created)
ELSE e.updated
END
) AS latest_date
FROM Event e
LEFT JOIN EventClinic ec ON e.id = ec.event_id
LEFT JOIN ClinicComment cc ON ec.clinic_id = cc.clinic_id
LEFT JOIN AttendersInfo af ON af.event_id = e.id
WHERE e.status = 'active'
AND (
e.id =43
OR e.id =45
)
GROUP BY e.title
ORDER BY latest_date DESC
おかげ
を試してみてください最大値
を返すようにGREATEST機能を提供し、私はこのクエリAS GREATEST (MAX(cc.updated)、MAX(af.created)、MAX(e.updated))を使用して実行します最新の日付 しかし、preoblemがあります。 1つの日付フィールドがNULLの場合、latest_dateはnullになります。 – kogyikyaw
'NULL'値を持つ日付フィールドではどうすればいいですか? – kogyikyaw
だからISNULLに対してすべての列をチェックし、NULL値を別の値に置き換える必要があります。私は答えを編集します – arilia