2011-07-05 116 views
2

我已經閱讀了幾個類似的問題,然後我可以找到幾乎與我正在使用的相同的查詢。但是,我不得不問,因爲我想知道這是爲什麼不工作:MySQL,在開始和結束日期列之間獲取數據?

,我有以下數據:

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 

我期望能獲得行1和2,從該查詢:

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

從我所經歷的情況來看,唯一返回的行是第二行。而且這一次,給了我第二次,

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(); 

的數據類型爲列的日期。所以,我的問題是,如何解決這個問題?這是爲什麼發生?或者我有一個明顯的錯誤,我沒有找到要尋找的東西。

非常感謝您尋找任何形式的幫助表示感謝!

--------------編輯:求助!

太棒了!我找到了一個解決方案,

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

按預期返回我的前2行!是啊! ; d

+0

如果解決後的溶液,作爲自己的答案,並接受 –

+0

什麼是從輸出'SELECT NOW()'?世界協調時間是UTC時間嗎? – Bohemian

+0

@Shakti Singh,好的,我會這麼做的。 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()返回日期-時間值。

使用CUR_DATE(),而不是NOW()

+0

感謝您的提示! – punkbit

2

工作查詢

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