我想在日期列中搜索。
我使用此查询:
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';
我根本不会得到任何结果!
怎么回事?
我做错了什么?
它只是忽略了'='符号......
请帮助:)
戴夫。
答案 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'))