我想计算上周编辑的行数 本周我正在使用此查询
SELECT COUNT( signup ) AS `count` FROM `users` WHERE DATE( signup ) >= SUBDATE(CURDATE(), 7) AND CURDATE()
这给了我答案
2294
当我试着计算上周的时候。它没有正确计算
SELECT COUNT( signup ) AS `count` FROM `users` WHERE DATE( signup ) >= SUBDATE(CURDATE(), 14) AND SUBDATE(CURDATE(), 7)
这给了我答案
3000
但正确的答案应该是
3000-2294 = 704
我做错了什么?
答案 0 :(得分:1)
在下面的两个查询中,第二个条件始终为true,因为curdate()
和SUBDATE(CURDATE(), 7)
都返回非零非空值,MySQL将其评估为true。
where date (signup) >= SUBDATE(CURDATE(), 7)
and CURDATE()
与:
相同where date (signup) >= SUBDATE(CURDATE(), 7)
并在第二个查询中:
where date (signup) >= SUBDATE(CURDATE(), 14)
and SUBDATE(CURDATE(), 7)
与
相同where date (signup) >= SUBDATE(CURDATE(), 14)
您可能想要使用between
:
select COUNT(signup) as `count`
from `users`
where date (signup) between SUBDATE(CURDATE(), 7)
and CURDATE()
和
select COUNT(signup) as `count`
from `users`
where date (signup) between SUBDATE(CURDATE(), 14)
and SUBDATE(CURDATE(), 7)
答案 1 :(得分:0)
这两个查询都是错误的,并且无法提供正确的结果。 WHERE
是
WHERE DATE( signup ) >= SUBDATE(CURDATE(), 7) AND CURDATE()
但它应该使用BETWEEN
WHERE DATE( signup ) BETWEEN SUBDATE(CURDATE(), 7) AND CURDATE()
在两个查询中都。
目前,如果列中有任何日期,则CURDATE()
/ SUBDATE(CURDATE(), 7)
为真