【问题标题】:Is there a way how you can only get datasets between two dates?有没有办法只能在两个日期之间获取数据集?
【发布时间】:2015-02-12 17:00:00
【问题描述】:

我想知道是否有办法只在两个日期之间获取数据集(具体时间示例:下午 5 点到 6 点之间)。我必须做一个选择,它只应该在下午 5 点到 6 点之间返回数据集。有没有一种方法可以让您轻松做到这一点?

编辑:这里是 SQL 代码:

Select fahrten_id, StartOrt, Zielort, abfahrt FROM fahrten WHERE ' + $von + ' <= abfahrt AND abfahrt <= ' + $bis + '

“abfahrt”是应该检查的日期。

编辑2:

<?php
header('Content-type: application/json');
$server = "---";
$username = "---";
$password = "---";
$database = "---";
$von = $_POST["von"];
$bis = $_POST["bis"];
$con = mysql_connect($server, $username, $password) or die ("Could not connect: " . mysql_error());
mysql_select_db($database, $con);
     $sql = "Select fahrten_id, StartOrt, Zielort, abfahrt FROM fahrten WHERE '$von' <= abfahrt AND abfahrt <= '$bis'";
$result = mysql_query($sql) or die ("Query error: " . mysql_error());
$records = array();

while($row = mysql_fetch_assoc($result)) {
    $records[] = $row;
}
mysql_free_result($result);
mysql_close($con);
echo $_GET['jsoncallback'] . '(' . json_encode($_POST) . ');';
?>

这是代码中的 PHP,我只删除了 pw 和用户名和服务器名

【问题讨论】:

  • 听起来很简单,但我们需要一些您目前拥有的代码才能提供帮助。
  • 需要代码。需要知道数据库服务器是什么。需要知道您是否将日期存储在 DATETIME 或仅作为字符数据。等等。
  • 另外,请编辑您的标签以包含您正在使用 MySQL、Oracle、SQL-Server 的 RDBMS。最佳解决方案可能取决于您使用的数据库。
  • 继续并使用运行查询的行的 PHP 代码更新问题,因为这里显然有 PHP 语法错误需要处理。 (即+ vs .
  • 您能告诉我们$von$bis 日期取什么值,输出是什么?事实上,我们只能猜测问题出在哪里,因为我们没有完整的陈述可供查看。查询大致看起来没问题 - 这些变量只是日期戳而不是日期+时间戳?

标签: php mysql sql database select


【解决方案1】:

您可以轻松地从日期字段中提取小时。然后将结果限制在您想要的小时内。

where Hour( DateField ) >= 17 and Hour( DateField ) < 18

这会将时间字段为“17:00:00.00000”的任何日期传递到“18:59:59.99999”(或者无论毫秒有多远)。如果您想要一个包容性的结果,请更改比较:

where Hour( DateField ) between 17 and 18

这将包括正好是“18:00:00.00000”的时间。 (有可能发生!)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-15
    • 2013-08-09
    • 2019-04-19
    • 1970-01-01
    • 2013-04-19
    • 2017-06-12
    • 1970-01-01
    相关资源
    最近更新 更多