首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql日期比较结果不正确

问mysql日期比较结果不正确
EN

Stack Overflow用户
提问于 2012-11-11 07:05:02
回答 2查看 824关注 0票数 1

我正在运行这个查询:

代码语言:javascript
复制
SELECT COUNT(*) as num FROM items 
WHERE status='public' 
AND DATE(dateCreated) >= '01-01-2012' 
AND DATE(dateCreated) <= '31-12-2012'

以获取2012年添加的所有项目的计数。结果: 629

但是,如果我将年份更改为2011年,我会得到完全相同的结果。

如果我完全删除日期比较,只需执行以下操作:

代码语言:javascript
复制
SELECT COUNT( * ) AS num
FROM items
WHERE STATUS =  'public'

这也给出了629行作为结果,即使表中从2009到2012年一直添加了一些项目,并且每年都应该给出不同的计数。

我做错了什么?

dateCreated列是datetime列。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-11 07:06:49

如果将列声明为datetime,则可以使用yyyy-MM-dd格式比较日期,或者使用yyyy-MM-dd HH:mm:ss格式比较日期时间。

代码语言:javascript
复制
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之间的数字开始。

票数 1
EN

Stack Overflow用户

发布于 2012-11-11 07:08:24

请尝试执行以下查询:

代码语言:javascript
复制
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‘格式

检索和显示日期时间值

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13326931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档