0

我正在尝试从 MySQL 表中选择 1 到 2 周大的记录该表有一个日期列。有一个 10 天前的日期,但查询忽略了它。你能帮忙吗?这是我正在使用的查询:

$week2 = mysql_query("SELECT * FROM apps WHERE (user = '" 
.mysql_real_escape_string($_POST['username']) . "') and date BETWEEN ( DATE_SUB( NOW(), 
INTERVAL 2 WEEK), DATE_SUB( NOW(), INTERVAL 1 WEEK )");

如果我将日期设置为不到一周,我可以选择没有问题的记录:

$week1 = mysql_query("SELECT * FROM apps WHERE (user = '" .
mysql_real_escape_string($_POST['username']) . "') and date > NOW() - INTERVAL 1 WEEK
ORDER BY id DESC limit 1");
4

1 回答 1

0

你使用BETWEEN不正确。

尝试

DATE BETWEEN x AND y

您也可以将字符串作为日期传递:

<?php
    $startDate = date("Y-m-d", mktime(0, 0, 0, date('m'), date('d') - 14, date('Y')));
    $endDate = date("Y-m-d", mktime(0, 0, 0, date('m'), date('d') - 7, date('Y')));

    $query = "... AND DATE BETWEEN '" . $startDate . "' AND '" . $endDate . "'";

此外,为了回应 tadman 的评论,您应该停止使用mysql_*函数。它们正在被弃用。而是使用PDOmysqli。如果您不确定要使用哪一个,请阅读这篇 SO 文章

于 2012-08-02T14:50:59.967 回答