私は、MySQLの選択クエリで予期しない動作が発生しています。私はクエリを実行しています:
SELECT `refno`, `subdomain`, `toplevels`, `renew_until`, `expiry_date`,
(YEAR(`renew_until`) - YEAR(`expiry_date`)) AS `renew_for` FROM `testing_names`
WHERE `expiry_date` >= DATE(NOW()) AND `renew_for` >= 0
それは(期待通りに)返されます:
| refno | subdomain | toplevels | renew_until | expiry_date | renew_for |
|-----------------------------------------------------------------------------------|
| 5 | domain1 | com | 2014-02-02 | 2014-02-02 | 0 |
| 45 | domain2 | net | 2014-01-27 | 2013-01-27 | 1 |
ただし、次のクエリ( renew_for
の異なる比較に注意)は空のセットを返します。
SELECT `refno`, `subdomain`, `toplevels`, `renew_until`, `expiry_date`,
(YEAR(`renew_until`) - YEAR(`expiry_date`)) AS `renew_for` FROM `testing_names`
WHERE `expiry_date` >= DATE(NOW()) AND `renew_for` > 0
このシナリオでは、私は行#45を期待していました。私の質問に何が間違っていますか? renew_for
を正しい方法で利用していますか?