2012-11-03 36 views
0

主要问题是,我已经存储在数据库datetime,而不是日期(我需要)。好吧,那算了。为什么这个MySQL SELECT不包含正确的日期?

我有成千上万的报告存储每一天。

我需要左10我datetime_view(切时间),一切都很好。除此之外。我试图弄清楚为什么我必须在未来的一天内投入条件?否则,它不会搜索我想要的。

SELECT 
    LEFT(datetime_view,10), 
    count(type) 
     FROM reports 
      WHERE 
     type IN (1,2,5) 
      AND 
     datetime_view>='2012-10-28' 
      AND 
     datetime_view<='2012-11-04' 
      group by LEFT(datetime_view,10); 

你可以看到我必须从未来寻找。为什么??

它让我从28.10到3.11的输出....

回答

1

不上的日期/时间值使用字符串操作。 MySQL有一个用于日期/时间操作的huge set of functions。尝试

GROUP BY DATE(datetime_view) 

改为只提取日期时间字段的日期部分。您的字符串操作不符合y10k。使用date()函数是。

至于您的plus one day,请考虑如何进行比较:在日期/时间比较中使用明文日期值时,附有一个隐含的00:00:00时间值,例如,所有的日期都有“午夜”的时间。

+0

非常感谢你! :-) – user1666761

1

我认为这是更好地使用DATE(datetime_view)削减时间,而不是LEFT(datetime_view,10),还对其中条件:

DATE(datetime_view) <= '2012-11-03' 
相关问题