1

SQL テーブルの行があり、1 つのフィールドが DATE です。(DATE にはデフォルト値がないため、値は未定義の場合があります)。この日付が存在する場合、まだ未来であるかどうかはどうすればわかりますか?

回答を検索し、このテストに合格したすべてのレコードを抽出する方法をたくさん見つけましたが、それはしたくありません。以前に抽出したこのレコードを確認したいだけです。初歩的な質問ですみません!

$userQuery  = "SELECT * FROM  `passwords` WHERE `name` = '$name' LIMIT 1";
$userResult     = mysql_query($userQuery);    
$userRow        = mysql_fetch_assoc($userResult); 
$bestBeforeDate = $userRow['bestBeforeDate']; // field is in DATE format
// what now? How to find if the 'best Before Date' has passed?
4

1 に答える 1

4

追加の列としてSQLで実行できます

select case when (current_timestamp < date_column) 
            then 1
            else 0
            end as is_in_future
from your_table

編集

テーブルから他の値を読み取りながら、1 つのクエリでこれを行うことができます。
例(テーブルの列名がわからない)

select id,
       date_column,
       other_column,
       case when (current_timestamp < date_column) 
            then 1
            else 0
       end as is_in_future
from your_table
where some_conditions

出力例:

id  date_column   other_column   is_in_future
 1  2012-01-01    abc            0
 2  2012-08-01    def            1
 ...
于 2012-05-06T19:32:06.663 に答える