按日期计数的条目给出了错误的结果

0 mysql count datetime

我通过以下查询得到了一些奇怪的结果:

SELECT count(id)
FROM `asins`
WHERE `StockUpdated` >= '2016-12-30'
and  `StockUpdated` <= '2016-12-31'
Run Code Online (Sandbox Code Playgroud)

结果是:24446

SELECT count(id)
FROM `asins`
WHERE `StockUpdated` >= '2016-12-30'
Run Code Online (Sandbox Code Playgroud)

结果是:33098

SELECT count(id)
FROM `asins`
WHERE `StockUpdated` >= '2016-12-30'
and `StockUpdated` <= '2017-1-1'
Run Code Online (Sandbox Code Playgroud)

结果是:33098

SELECT count(id)
FROM `asins`
WHERE `StockUpdated` >= '2017-1-1'
Run Code Online (Sandbox Code Playgroud)

结果是:0

我的问题是为什么下面的查询不完美?

SELECT count(id)
FROM `asins`
WHERE `StockUpdated` >= '2016-12-30'
and  `StockUpdated` <= '2016-12-31'
Run Code Online (Sandbox Code Playgroud)

Mik*_*son 5

看起来StockUpdated有一个时间部分,使查询不计算2016-12-31时间以外的值00:00

尝试进行非包容性比较。 StockUpdated < '2017-01-01'

  • 是的,+1。`StockUpdated` 是一个 `datetime` 或一个 `timestamp` 而不是 `date`,正如“奇怪的结果”结论所假设的那样。结果只证明正好有 (33098-24446)=8652 行是 `&gt; '2016-12-30'` 和 `&lt; '2017-01-01'`,所以正如这个答案所说,有时间除了 00:00:00。 (2认同)