0

[私の英語で前もってお詫びします]

データベース テーブル event_start_date (ユーザー入力日時) に列があり、現在の日時より x 日前のデータを取得する必要があります。結果のレコードの event_start_date の値は NOW() (現在の日時) 以上である必要があります

`event_start_date >= NOW()`  (using php or mysql)

これは私がこれまでに行ったことです(magentoのzend):

$sql = $read->select() ->from(array('e' => 'my_table'));

$where = "e.event_start_date = DATE(DATE_ADD(e.event_start_date, INTERVAL x DAY))";

$sql->where($where);

echo $sql->__toString();exit;// 結果は

SELECTe.* FROM 'my_table' AS 'e' WHERE (e.event_start_date = DATE(DATE_ADD(e.event_start_date, INTERVAL x DAY)))

私が使用した別のものは

SELECTe.* FROM 'my_table' AS 'e' WHERE DATEDIFF(e.event_start_date,DATE(DATE_ADD(e.event_start_date, INTERVAL {$x} DAY)));

x = 1 のみの場合、どちらも 1 行を出力します。解決策は何ですか?私はちょっと立ち往生しています。

どうもありがとうございました。

ありがとう、

4

1 に答える 1

1

次のようになります。

SELECT * FROM table WHERE event_start_date BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 5 DAY)

あなたの声明:

DATEDIFF(e.event_start_date,DATE(DATE_ADD(e.event_start_date, INTERVAL {$x} DAY)));

実際には、「start_date + 3 日が start_date よりも高い」という意味であり、あまり意味がありません

于 2013-05-13T11:08:50.883 に答える