你能告诉我为什么这样有效吗:
$customer_data_date14daysAgo = mysql_query("SELECT COUNT(*) AS count
FROM tableName WHERE datetime BETWEEN '$date14daysAgo%' and
'$dateToday%' ") or die(mysql_error());
但这不是吗?
$customer_data_date30daysAgo = mysql_query("SELECT COUNT(*) AS count
FROM tableName WHERE datetime BETWEEN '$date30daysAgo%' and
'$dateToday%' ") or die(mysql_error());
PHP:
$dateToday = date ( 'Y-M-d', strtotime ( '-0 day' . $date ) );
$date14daysAgo = date ( 'Y-M-d', strtotime ( '-14 day' . $date ) );
$date30daysAgo = date ( 'Y-M-d', strtotime ( '-1 month' . $date ) );
$dateToday = 2010 年 10 月 28 日
$date14daysAgo = 2010 年 10 月 21 日
$date30daysAgo = 2010 年 9 月 28 日
唯一的区别是第二个查询跨越了 9 月 - 10 月的障碍。
如果我手动将日期设置为 2010 年 10 月 1 日直到今天 - 它有效
但如果从 2010 年 9 月 30 日到今天 - 它就会停止工作
谢谢!
最佳答案
如果您想要搜索一个月前直到当前日期的数据,也许这会有所帮助:
SELECT COUNT(*) AS count FROM table
WHERE date BETWEEN DATE_SUB(CURRENT_DATE(),INTERVAL 1 MONTH) AND CURRENT_DATE()
如果你想显示1个月前(不包括当前日期),你可以使用:
SELECT COUNT(*) AS count FROM table
WHERE date <= DATE_SUB(CURRENT_DATE(),INTERVAL 1 MONTH)
但如果我没有误解的话。
<小时/>按照您的问题,尝试如下:
$customer_data_date30daysAgo = mysql_query("SELECT COUNT(*) AS count
FROM tableName WHERE datetime BETWEEN '".$date30daysAgo."%' and
'".$dateToday."%' ") or die(mysql_error());
关于php - MySQL 选择并计算日期范围 : Doesn't work crossing the month barrier,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4048384/