MySql Select Query无法正常运行

时间:2014-10-01 12:34:00

标签: java mysql sql search select

我想在日期列中搜索。

我使用此查询:

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

我只收到2014年4月4日至2014年9月18日的结果不包括最后一天

如果我使用:

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

我根本不会得到任何结果!

怎么回事?

我做错了什么?

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

请帮助:)

戴夫。

3 个答案:

答案 0 :(得分: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';

答案 1 :(得分:1)

这是因为'2014-09-19'表示2014年9月19日午夜(00:00:00),因此查询不会返回任何ClosingTimeStamp等于{{1}的记录} 例如。您应该将一天添加到第二个where条件的上限,并将其设为2014-09-19 09:25:00而不是<,以避免查询返回任何<=等于ClosingTimeStamp <的记录/ p>

2014-09-20 00:00:00

答案 2 :(得分:0)

尝试将字符串转换为DateTime with time part:

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'))