基本的に、私は自分の販売ページで自動有効期限を設定しようとしています。私はこのSQLを持っています。
DELETE
FROM `game_sales`
WHERE `expires` <= NOW()
AND `expires` > 0
現在の時刻よりも低いexpires > 0
にもかかわらず、すべての行を削除するようです。expires
どうすればこれを止めることができますか?
INT
を aと単純に比較することはできませんDATETIME
(これがNOW()
返されます)。
あなたexpires
が実際にタイムスタンプである場合は、次のいずれかを実行できます。
タイムスタンプをDATETIME
withに変換しFROM_UNIXTIME()
ます:WHERE FROM_UNIXTIME(expires) <= NOW()
DATETIME
を整数に変換します。WHERE expires <= UNIX_TIMESTAMP(NOW())
2 番目のオプションが優先されることは間違いありません。このバージョンでは、ほとんどのクエリでインデックスを使用できるはずexpires
です(最初のバージョンでは、この列でのインデックスの使用は確実に禁止されています)。