我正在运行这个查询:
SELECT COUNT(*) as num FROM items
WHERE status='public'
AND DATE(dateCreated) >= '01-01-2012'
AND DATE(dateCreated) <= '31-12-2012'以获取2012年添加的所有项目的计数。结果: 629
但是,如果我将年份更改为2011年,我会得到完全相同的结果。
如果我完全删除日期比较,只需执行以下操作:
SELECT COUNT( * ) AS num
FROM items
WHERE STATUS = 'public'这也给出了629行作为结果,即使表中从2009到2012年一直添加了一些项目,并且每年都应该给出不同的计数。
我做错了什么?
dateCreated列是datetime列。
发布于 2012-11-11 07:06:49
如果将列声明为datetime,则可以使用yyyy-MM-dd格式比较日期,或者使用yyyy-MM-dd HH:mm:ss格式比较日期时间。
SELECT COUNT(*) as num FROM items
WHERE status='public'
AND dateCreated >= '2012-01-01'
AND dateCreated <= '2012-12-31'如果使用DATE()函数与格式中的日期进行比较,则实际上是按字母顺序比较字符串,因此使用dd-mm-yyyy格式时,任何日期都将以1到3之间的数字开始。
发布于 2012-11-11 07:08:24
请尝试执行以下查询:
SELECT COUNT(*) as num FROM items
WHERE status='public'
AND dateCreated >= '2012-01-01'
AND dateCreated <= '2012-12-31'从MySQL docs
DATETIME类型用于同时包含日期和时间部分的值。MySQL以'YYYY-MM-DD HH:MM:SS‘格式
检索和显示日期时间值
https://stackoverflow.com/questions/13326931
复制相似问题