PHP / MySQL日期搜索

时间:2010-12-16 07:50:27

标签: php mysql datetime

我的脚本适用于所有销售,但在15日跳过所有销售。

这段时间的MySQL行如下所示: ID:10 START:2010-12-01 END:2010-12-15

销售的MySQL行如下所示: 日期:2010-12-15 20:40:26

$period_info=mysql_fetch_array(mysql_query("SELECT start,end FROM period WHERE id='$period' LIMIT 1"));
$start=$period_info["start"];
$end=$period_info["end"];

$total_sales=mysql_num_rows(mysql_query("SELECT * FROM sales WHERE seller='$seller' AND date BETWEEN '$start' AND '$end'"));

和想法?

3 个答案:

答案 0 :(得分:2)

这是因为MySQL使用00:00:00作为DATE类型的时间。我想你可以使用:

"SELECT * FROM sales WHERE seller='$seller' AND (CAST date AS DATE) BETWEEN '$start' AND '$end'"

答案 1 :(得分:1)

仅比较日期时间的日期部分,并忽略时间部分:

WHERE DATE(`date`) BETWEEN '$start' AND '$end'

答案 2 :(得分:1)

为了在BETWEEN上使用日期或时间值时获得最佳效果,请使用CAST()将值显式转换为所需的数据类型。示例:如果将DATETIME与两个DATE值进行比较,请将DATE值转换为DATETIME值。如果在与DATE的比较中使用字符串常量(如“2001-1-1”),则将字符串强制转换为DATE。