【问题标题】:How to display data from database between two selected date如何在两个选定日期之间显示数据库中的数据
【发布时间】:2013-09-19 02:33:04
【问题描述】:
$result=mysql_query("SELECT * FROM attendance WHERE date Between '$start_date' and '$end_date' order by date asc") or die(mysql_query);

上面的mysql查询是获取用户选择的两个日期之间数据库中的所有数据。假设我的数据库中的表出勤率如下所示

2009-07-01    3
2009-07-03    4
2009-07-04    5
2009-07-06    7
2009-07-07    6
2009-07-10    8
  1. 如果 $start_date = "2009-07-01" 和 $end_date = "2009-07-10",它将显示两个选定日期之间的所有数据

    2009-07-01    3
    2009-07-03    4
    2009-07-04    5
    2009-07-06    7
    2009-07-07    6
    2009-07-10    8
    

(我注意到这是成功的,因为这两个日期都存在于数据库中)。

  1. 如果 $start_date = "2009-07-02" 和 $end_date = "2009-07-09",我希望它显示的是

    2009-07-03    4
    2009-07-04    5
    2009-07-06    7
    2009-07-07    6
    

不幸的是,输出永远不会像我预期的那样。发生这种情况是因为数据库中不存在这两个日期。我知道我的查询有问题。如果有人可以帮助我解决这个问题,那就太好了。提前致谢!

【问题讨论】:

  • 那么在您的最终案例中,您的输出是什么?没有?一切?
  • 没什么.... @andrewsi
  • 如果您的开始日期为 2009 年 7 月 1 日,结束日期为 2009 年 7 月 9 日,会发生什么情况?而你的数据库表中date的定义是什么?
  • 我收到一条错误消息,指出日期 2009-07-09 ($end_date) 的变量未定义。列名:日期;数据类型:日期; @andrewsi
  • 您的工作查询是否返回2009-07-26 7?这绝对不应该根据您的查询返回。

标签: php mysql database date


【解决方案1】:
$result=mysql_query("SELECT * FROM attendance WHERE DATE(date) Between '$start_date' and '$end_date' order by date asc") or die(mysql_query);

$result=mysql_query("SELECT * FROM attendance WHERE DATE(date) >='$start_date' and DATE(date) <='$end_date' order by date asc") or die(mysql_query);

【讨论】:

  • 它不起作用。我都试过了。但仍然收到相同的错误消息。
  • 它表示如果两个选定的日期都不在数据库中,则 $start_date 和 $end_date 的变量是未定义的。
  • $start_date 和 $end_date undefined 它与数据库无关。它的php错误。可以在 sql 查询 echo $start_date ."----" 之前回显这些日期。 $end_date;
  • 请检查为 $start_date 变量赋值的部分
  • $result=mysql_query("SELECT * FROM Attendance WHERE DATE(date) >='2009-07-02' and DATE(date)
猜你喜欢
  • 1970-01-01
  • 2015-07-10
  • 1970-01-01
  • 2012-01-17
  • 2020-05-25
  • 2012-11-03
  • 1970-01-01
  • 2012-10-31
  • 2012-03-03
相关资源
最近更新 更多