2

Informix の日付であるデータベースからの値があります。この値が null になるか、日付になることがあります。次のように、その値を今日の日付と比較しています。

if(value_from_db <= todays_date){
  //display Todays greater
}
else{
  //Display Todays smaller
}

ここでの出力は何になりますか。出力されますTodays greaterか、またはTodays smaller 私の質問はvalue_from_db is NULL、if条件またはelse条件の内側に入るかどうかです。

日付フィールドは NULL 値を取得します。FOR EACH を使用すると、ユーザー日付よりも大きくても小さくても、この NULL フィールド レコードが表示されます。他のすべての日付よりも大きく、同時に他のすべての日付よりも NULL のようです。

NULL 値を格納するフィールドがインデックス コンポーネントである場合、NULL 値は上位にソートされます。

これをphpに変換する必要がありますが、正しいo/pを分析した後.phpの場合

if(strtotime(NULL) <= time())
  echo 'Todays greater';
else
  echo 'Today is smaller';

これは出力します

Todays greater

私は混乱しています.どんな助けでも大歓迎です.

4

3 に答える 3

0

簡単に言えば、関係する変数のいずれかが である算術比較は、NULL結果が になります。つまり、現在の形式のコードは句falseまでドロップされます。ELSE

NULLたとえば、明示的にテストする必要があります

IF value_from_db IS NULL THEN
    /* display date is unknown */
ELSIF value_from_db <= TODAY THEN
    /* display date is in the past */
ELSE
    /* display date is in the future */
END IF;

あなたの例では、テストの順序はそれほど重要ではありません。これを次のように書くこともできます

IF value_from_db <= TODAY THEN
    /* display date is in the past */
ELSIF value_from_db > TODAY THEN
    /* display date is in the future */
ELSE
    /* display date must be null */
END IF
于 2013-11-10T22:34:32.743 に答える