2011-06-02 58 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'百通正确读取。