2014-10-01 85 views
0

我想在Date列中搜索。MySql Select Query不能正常工作

我使用此查询:

SELECT * FROM requestserverdb.closedrequests 
WHERE 
ClosingTimeStamp >= '2014-09-04' 
AND 
ClosingTimeStamp <= '2014-09-19'; 

我只能从2014年4月9日结果18-09-2014,它不包括最后一天!

也是,如果我使用:

SELECT * FROM requestserverdb.closedrequests 
WHERE 
ClosingTimeStamp >= '2014-09-04' 
AND 
ClosingTimeStamp <= '2014-09-04'; 

我不会全部得到任何结果!

怎么回事?

我做错了什么?

它只是忽略了 '=' 号......

请帮助:)

戴夫。

+0

“ClosingTimeStamp”列的数据类型是什么? – Jens 2014-10-01 12:37:32

+0

@Jens它的DateTime。 – 2014-10-01 13:18:31

回答

2

解决此问题的另一种方法是在日期的末尾添加“23:59:59”。这会让自动生成的查询变得更容易,而不是有朝一日推进日期。此外,如果您将其设置为提前一天,并且实际上已收到包含结果中包含'2014-09-20 00:00:00'时间戳的封闭请求。我会假设你不想要的。你可以这样做。

SELECT * FROM requestserverdb.closedrequests 
WHERE 
ClosingTimeStamp >= '2014-09-04' 
AND 
ClosingTimeStamp <= '2014-09-19 23:59:59'; 
+0

作品完美 - 谢谢! – 2014-10-05 09:02:05

1

这是因为'2014-09-19'是指2014年9月在午夜(00:00:00)19,因此查询不会ClosingTimeStamp返回任何记录例如等于2014-09-19 09:25:00。你应该添加一天的上界在第二的地方条件和利用它<代替<=避免与ClosingTimeStamp返回任何记录查询等于2014-09-20 00:00:00

SELECT * FROM requestserverdb.closedrequests 
WHERE 
ClosingTimeStamp >= '2014-09-04' 
AND 
ClosingTimeStamp < '2014-09-20'; 
0

试图将字符串转换为日期与时间的一部分:

SELECT * FROM requestserverdb.closedrequests 
WHERE 
ClosingTimeStamp between STR_TO_DATE('2014-09-04 0:0:0' , '%Y/%c/%d %H:%i:%s')) AND 
STR_TO_DATE('2014-09-19 23:59:59' , '%Y/%c/%d %H:%i:%s'))