web-dev-qa-db-ja.com

NOWがフィールドの2つの日付の間にあるレコードを選択する方法は?

私はこれをあちこち検索しましたが、1つの日付が2つの「外部」日付の間にあるレコードを取得する方法しか見つけられないようです。

現在の日付がstartDateフィールドの値とendDateフィールドの値の間にあるレコードを選択する方法を知りたいです。

私がこれまでに持っているもの(PHP):

$now = new DateTime();
$sql = "
    SELECT content, image, imageHeight, imageWidth, link, linkDescription 
    FROM news 
    WHERE appearanceDate < $now  
      AND $now < termDate 
    ORDER BY appearanceDate DESC
";

しかし、それは機能しません。

1
Robusto

mysqlNOW()関数を使用できます。これは、termDateが後日であることを前提としています。

Select content, image, imageHeight, imageWidth, link, linkDescription
  From news
  Where appearanceDate < NOW() 
    And termDate > NOW()
  Order By appearanceDate Desc;
4
mendosi

包括的な範囲が必要な場合は、 [〜#〜] between [〜#〜] によって提供される少し優れた構文を使用できます

WHERE NOW() BETWEEN appearanceDate AND termDate

Exprがmin以上で、exprがmax以下の場合、BETWEENは1を返し、それ以外の場合は0を返します。これは、すべての引数が以下の場合、式(min <= expr AND expr <= max)と同等です。同じタイプの。それ以外の場合、セクション13.2「式評価でのタイプ変換」で説明されているルールに従ってタイプ変換が行われますが、3つの引数すべてに適用されます。

2
Evan Carroll