我的SQL查询没有选择我要求的所有行。它只考虑日期时间的日期部分;几个月没有得到任何关注。
这是我的疑问:
mActionMode = InstalacionesEncontradasMostradasEnMapaFragment.this.startActionMode(new ActionBarCallBack(marker));
这些日期没有结果,但日期更改为:
SELECT *
FROM Reservations
WHERE ReservationDate >= '24/04/2015' AND ReservationDate <= '24/03/2015'"
我得到2个结果SELECT *
FROM Reservations
WHERE ReservationDate >= '24/04/2015' AND ReservationDate <= '17/03/2015'"
。
顺便说一句,ReservationDate字段是字符串格式。即使它在DateTime上也是如此。
when ReservationDate= "17/04/2015 15:02:03" and "21/04/2015 16:05:56"
答案 0 :(得分:4)
尝试使用between运算符作为日期
select * from Reservations
where
ReservationDate between '17/03/2015'
and
DATE_ADD('24/04/2015',INTERVAL 1 DAY) // or something like that
此外,在MySQL中,您可以使用DATE函数从日期时间中提取日期:
select * from Reservations
where
DATE(ReservationDate) BETWEEN '17/03/2015' AND '24/03/2015'
如果您使用的是MS Sql Server,则有some other个变通方法可以从字符串中获取日期。
<强>更新强>
由于@Netanelgo说他正在使用MS Access:
尝试CDate()
将字符串转换为日期。
select * from Reservations
where CDate(date) between #17/03/2015# and #24/03/2015#;
如果因为CDate无法重新格式化而无效,则可以使用DateSerial(年,月,日)来构建日期。您将需要使用mid $和Cint()来构建年,月和日参数。对于格式为“yyyy-mm-dd”的这样的事情:
DateSerial(CInt(mid(date, 1, 4)), CInt(mid(date, 6, 2)), CInt(mid(date, 9, 2))
答案 1 :(得分:1)
在你的第一句话改变比较如下
SELECT *
FROM Reservations
WHERE ReservationDate <= '24/04/2015' AND ReservationDate >= '24/03/2015'"
答案 2 :(得分:1)
我尝试重新创建此功能,但在查询这些日期时却没有收到任何数据行。这可能是因为(正如abbaselmas所指出的)你的&lt;和&gt;似乎有点困惑。
问题似乎是您将日期存储为字符串。正如Bojan所提到的,你可以使用DATE()运算符在MySQL中解决这个问题。在T-SQL中,您可以使用强制转换,如下所示:
get(tr, 'Pointers')
当我更改日期时,它只返回了我期待看到的预订。
答案 3 :(得分:1)
这应该做:
Select * From Reservations
Where
DateSerial(Mid(ReservationDate, 7, 4), Mid(ReservationDate, 4, 2), Mid(ReservationDate, 1, 2))
Between #17/03/2015# and #24/03/2015#;