2011-06-02 59 views
0

我使用c#下面的查詢將當前日期與存儲在數據庫中的日期作爲字符串進行比較。但它並未顯示正確的輸出,即使它沒有顯示任何錯誤。在mysql中比較兩個日期的問題

Select * from tblconcertdetail 
WHERE STR_TO_DATE(Concert_Date,'%m/%d/%Y')>="+DateTime.Now.ToString("yyyy-MM-dd")+"; 

第一參數顯示爲:2011-06-10 第二節目; 2011-06-02

它顯示錶中的所有行

+0

會發生什麼,如果你直接輸入您的STR_TO_DATE輸出比較的日期,例如,STR_TO_DATE(...)> = '2011-06-02' – tofutim 2011-06-02 07:57:50

+3

你試過:SELECT * FROM tblconcertdetail WHERE STR_TO_DATE( Concert_Date,'%m /%d /%Y')> = curdate()? – 2011-06-02 07:59:03

+0

'Concert_Date'是日期/日期時間/時間戳? – 2011-06-02 08:07:03

回答

1

確實像你說的YYYY-MM-DD的第一個參數返回????確保「Concert_Date」的值應該看起來像「04/22/2011」。

嘗試以下操作:

Select * from tblconcertdetail where date(Concert_Date) >= "+DateTime.Now.ToString("yyyy-MM-dd")+"; 

我覺得Concert_Date是數據類型 「日期」 或 「日期時間」 或 「時間戳」 的。

+0

不,我已將Concert_Date當作字符串類型,以便插入數據時易於使用 – user755230 2011-06-02 08:48:39

+0

@ user755230:如果有可能downvote評論,我會這麼做! – 2011-06-02 09:35:20

0

STR_TO_DATE(Concert_Date,'%m/%d/%Y')的輸出取決於Concert_Date。 與第二次日期相比,其不同的值會產生不同的結果。

我想你應該嘗試使用這個代碼部分:

STR_TO_DATE('2011-06-10','%Y-%m-%d'); 

恕我直言,如果Concert_Date等於2011-06-10你不能'%m/%d/%Y'百通正確讀取。