【问题标题】:How do I SELECT only rows that are greater than today's date and time?如何仅选择大于今天日期和时间的行?
【发布时间】:2013-11-25 12:19:45
【问题描述】:

如果这是一个简单的问题,请原谅我,但我试图回显仅在未来的行,即:大于今天的日期和时间。到目前为止,这是我的代码:

$date = date('Y-m-d');
$time = date("G:i:s", time());

$eventsquery = "SELECT * FROM events as A WHERE tech='$userecho' AND date >= '$date' ORDER BY date ASC, time ASC";
$eventsresult = mysql_query($eventsquery, $eventsdbhandle);

这非常适合为我提供今天或未来的行, 这个问题是,这会给我当天当前时间之前发生的条目。所以我尝试添加这个:

$eventsquery = "SELECT * FROM events as A WHERE tech='$userecho' AND date >= '$date' AND time >= '$time' ORDER BY date ASC, time ASC";

但我根本没有得到任何行。我知道这可能是一个简单的修复,但我在这个网站上没有找到任何修复它的东西。任何帮助都会很棒。

表格中的时间以这种格式存储:hh:mm:ss 即:14:23:12

【问题讨论】:

  • 您能告诉我们您是如何将time 存储在数据库中的吗?
  • 您是否打印了$time?那正是你的时间?如果time 正确存储在数据库中,则时区可能有问题。

标签: php mysql date select time


【解决方案1】:

如果你有 1 列日期时间值,你可以说

"SELECT * FROM table_name WHERE entry_time > NOW()"

但是,如果您有两个不同的日期和时间列,则会变得复杂 您将不得不使用

"SELECT * FROM table_name WHERE entry_date > CURDATE() OR (entry_date = CURDATE() AND entry_time > CURTIME()"

【讨论】:

  • 完美。这钉住了它。谢谢!
【解决方案2】:

一种方法

SELECT * 
  FROM events
 WHERE tech = ?
   AND ADDTIME(date, time) > NOW()
 ORDER BY ADDTIME(date, time)

这里是SQLFiddle演示

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-15
    • 1970-01-01
    • 2015-10-28
    • 1970-01-01
    • 1970-01-01
    • 2017-08-14
    • 1970-01-01
    相关资源
    最近更新 更多