2011-07-05 44 views
2

私はいくつかの類似の質問を読んだことがあります。ここで私が使用しているクエービーはほぼ同じです。しかし、私はこれが動作しない理由を理解したいと思いますので、お願いしました:MySQL、開始日と終了日の間のデータを取得しますか?

I持って、次のデータ:私はこのクエリから、行1および2を得ることを期待

id category_id  start_date end_date image campaign_id  published 
1 1    2011-07-05 2011-07-5 a.gif 3    1   
2 1    2011-07-01 2011-07-15 c.gif 3    1 
3 37    2011-07-01 2011-07-04 d.gif 3    1 

SELECT id, category_id, start_date, end_date FROM categories_campaigns WHERE start_date <= NOW() AND end_date >= NOW(); 

私が経験したことから、返される行は2番目の行だけです。また、この1、私の第二を与え、

SELECT category_id, start_date, end_date FROM categories_campaigns WHERE end_date >= NOW(); 

次は、すべて3、

SELECT category_id, start_date, end_date FROM categories_campaigns WHERE start_date <= NOW(); 

両方の列のデータ型を私に返しDATEです。だから、私の質問は、これを解決する方法ですか?なぜこうなった ?または、私は何を探すべきか分かっていないという明らかな誤りがあります。

ありがとうございました。どんな種類のお探しですか?ありがとうございます。

-------------- EDIT:SOLVED!

素晴らしい!私は解決策を見つけました。

SELECT category_id, start_date, end_date FROM categories_campaigns WHERE start_date <= DATE(NOW()) and end_date >= DATE(NOW()); 

期待通りに最初の2行を返します!うん!! ; D

+0

の使用CUR_DATE()にそれが解決されている場合は、あなた自身の答えのような溶液を投稿し –

+0

が '' NOW SELECT()からの出力は何であると?受け入れますかいつかUTC時間ですか? – Bohemian

+0

@ Shakti Singh、ok、そうします。 Tks – punkbit

答えて

0

私はあなたがこれを使用することができると思う:

SELECT category_id, start_date, end_date FROM categories_campaigns WHERE left(now(),10) between start_date and end_date; 
+0

素敵なヒント!私はあなたのアプローチを将来も試みます。日付を読むのが簡単だと思います:) – punkbit

0

私はstart_dateend_datedateデータ型であると仮定します。しかしNOW()は、時間の値を返します。

代わりNOW()

+0

あなたのヒントをありがとう! – punkbit

2

の作業クエリ

SELECT category_id, start_date, end_date FROM categories_campaigns WHERE start_date <= DATE(NOW()) and end_date >= DATE(NOW()); 
関連する問題