我的脚本适用于所有销售,但在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'"));
和想法?
答案 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。