開始日が現在の日付からのすべてのイベントを選択しようとする次のクエリを作成しました (テーブルに start_date フィールドと end_date フィールドがあります)。
$query = "SELECT id,title,start_date
FROM events
WHERE start_date > NOW() - INTERVAL 30 DAY AND city = '$cityName'
ORDER BY start_date DESC";
私が気付いた上記のコードの唯一の問題は、イベントが開始された場合、たとえば 3 か月前にイベントがNOW()
表示されないことでした。行って書き直そうとしましたが、うまくいきませんでした。これは私が管理したものです:
"SELECT id,title,start_date
FROM events
WHERE start_date >= NOW() - INTERVAL 30 DAY || start_date <= NOW() && end_date >= NOW() - INTERVAL 30 DAY";
私がやろうとしたことは、開始日が現在の日付 ( NOW()
) 以上であるすべてのイベントを選択するか、現在の日付よりも前である可能性がある start_date のイベントを選択することですが、終了日はNOW()
. これを修正する方法について何か提案はありますか? 私は、イベントが発生していない限り、すべてのイベントを表示したいと考えています (もちろん、終了日が現在の実際の日付よりも小さくないことを意味します)。
ありがとう、
編集:
$query = "SELECT id,title,start_date FROM events WHERE start_date > NOW() - INTERVAL 30 DAY AND city = '$cityName' ORDER BY start_date DESC";
$query_posted = "SELECT id,title,start_date FROM events WHERE start_date > DATE_SUB(NOW(), INTERVAL 1 MONTH) AND city = '$cityName' AND category = '$tag' ORDER BY start_date DESC";
最初のものは変更後にイベントをロードしましたが (変更は含まれていません)、2 番目のものは失敗しました。最後に別の 2 つの AND が原因だと思います。