0

基本的に、私は自分の販売ページで自動有効期限を設定しようとしています。私はこのSQLを持っています。

DELETE 
FROM `game_sales` 
WHERE `expires` <= NOW() 
  AND `expires` > 0

現在の時刻よりも低いexpires > 0にもかかわらず、すべての行を削除するようです。expires

どうすればこれを止めることができますか?

4

2 に答える 2

4

INTを aと単純に比較することはできませんDATETIME(これがNOW()返されます)。

あなたexpiresが実際にタイムスタンプである場合は、次のいずれかを実行できます。

  • タイムスタンプをDATETIMEwithに変換しFROM_UNIXTIME()ます:WHERE FROM_UNIXTIME(expires) <= NOW()

  • DATETIMEを整数に変換します。WHERE expires <= UNIX_TIMESTAMP(NOW())

2 番目のオプションが優先されることは間違いありません。このバージョンでは、ほとんどのクエリでインデックスを使用できるはずexpiresです(最初のバージョンでは、この列でのインデックスの使用は確実に禁止されています)。

于 2013-08-19T15:08:30.073 に答える