我尝试从今天的日期加上日期tommorow选择我的数据库中的记录。每次执行此代码时,它都会显示从今天开始的记录。
我尝试过在任何地方寻找/搜索,但找不到任何东西。
这是我的代码。
SELECT sum(qty) FROM rooinventory where arrival <= CURDATE() + INTERVAL 1 DAY and room='$a'";
有什么建议吗?感谢
答案 0 :(得分:1)
使用between
SELECT sum(qty) FROM rooinventory
where arrival between curdate() and CURDATE() + INTERVAL 1 DAY
and room='$a'";
或
SELECT sum(qty) FROM rooinventory
where (arrival = curdate() or arrival = CURDATE() + INTERVAL 1 DAY)
and room='$a'";
答案 1 :(得分:0)
假设您的arrival
列是TIMESTAMP或DATETIME项,则需要使用此查询:
WHERE arrival >= CURDATE()
AND arrival < CURDATE() + INTERVAL 2 DAY
这看起来有点奇怪,但事情是这样的:像'2014-08-14 08:15:00'的日期时间不小于或等于'2014-08- 14':它发生在该日期的午夜之后。使用严格不等式<
并在结束时间添加额外的一天始终可以正常工作,因为它接受arrival
值,但不包括您有兴趣检查的最后一天的午夜。
由于此原因,BETWEEN
关键字不适合DATETIME或TIMESTAMP比较。
答案 2 :(得分:0)
如果到达数据类型为DATETIME或TIMESTAMP,那么您必须将两天添加到上限。正如juergen所指出的,你也必须设定一个下限。确切地说,最好使用&lt;正如奥利琼斯在评论中指出的那样。
SELECT
sum(qty)
FROM
rooinventory
where
arrival >= CURDATE() AND arrival < CURDATE + INTERVAL 2 DAY
AND room = '$a'";
<强>解释强>
SELECT CURDATE() + INTERVAL 1 DAY
返回2014-08-14
2014-08-15 00:00:00
如果您的到达列类型为DATETIME
或TIMESTAMP
,那么明天所有不在午夜的值都不会包含在您的结果中。
答案 3 :(得分:0)
使用date_add函数
实施例: -
SELECT DATE_ADD(&#39; 2005-05-24&#39;,INTERVAL(7 - DAYOFWEEK(&#39; 2005-05-24&#39;))DAY)
请尝试以下查询: -
DATE_ADD(CURDATE()+ INTERVAL 1 DAY)
查看链接了解更多详情: - http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-add