1

私のmysqlデータベーステーブルメッセージはこのようなものです

id   message    start_date    end_date
1    message1   2013-09-29    2013-11-30
2    message2   2013-08-20    2013-09-30
3    message3   2013-06-20    2014-01-01
4    message4   2013-06-06    2013-09-20
5    message5   2013-10-25    2014-03-05

ときにメッセージを表示したいのですがstart_date is equal to today and today is greater than start_date、同じように end_date. end_date を超えると、メッセージは表示されません。そのために私はこのようにしました

SELECT * FROM messages WHERE start_date >= CURDATE( )  and end_date >= CURDATE( );

しかし、これは開始日が来ていないすべてのメッセージを示しています。行のように5th(5 message5 2013-10-25 2014-03-05)。したがって、start_date が今日であり、start_date が交差しており、end_date まで表示される間のメッセージのみが必要です。それで、誰かが親切にこれを行う方法を教えてもらえますか?どんな助けや提案も本当に価値があります。ありがとう

4

1 に答える 1

1

これが必要なものだと思います:

編集:

SELECT * FROM メッセージ WHERE NOW() BETWEEN start_date AND end_date;

SELECT * FROM messages WHERE CURDATE() BETWEEN start_date AND end_date;

参考までに、元のクエリでは、 start_date を比較するときに演算子の方向を変更するだけで済みます。

SELECT * FROM messages WHERE start_date <= CURDATE() and end_date >= CURDATE();
于 2013-09-28T20:09:39.690 に答える