从今天到明天选择数据库中的记录

时间:2014-08-14 12:08:54

标签: mysql

我尝试从今天的日期加上日期tommorow选择我的数据库中的记录。每次执行此代码时,它都会显示从今天开始的记录。

我尝试过在任何地方寻找/搜索,但找不到任何东西。

这是我的代码。

SELECT sum(qty) FROM rooinventory where arrival <= CURDATE() + INTERVAL 1 DAY and room='$a'";

有什么建议吗?感谢

4 个答案:

答案 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

如果您的到达列类型为DATETIMETIMESTAMP,那么明天所有不在午夜的值都不会包含在您的结果中。

答案 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