【问题标题】:MySQL count dateMySQL 计数日期
【发布时间】:2012-11-26 12:02:38
【问题描述】:

为什么会这样

此查询不应该检索特定日期之前的记录数吗?

SELECT count(*) FROM `posts` WHERE date < 2013-01-01

我在数据库中有几条与查询匹配的记录,但是计数为 0

我做错了什么??

【问题讨论】:

  • SELECT count(*) FROM posts WHERE date
  • date 列的数据类型是什么?
  • @sdespont 请发布正式答案,因为您是第一个发表评论的人,所以我可以接受!谢谢!解决了它

标签: mysql date count


【解决方案1】:

您需要使用DATE 将字符串定义为日期

SELECT count(*) FROM posts WHERE date < DATE('2013-01-01')

【讨论】:

  • 我很想知道,将日期文字中的日期部分放在哪里会产生丝毫差异?
【解决方案2】:
SELECT count(*) FROM `posts` WHERE `date` < '2013-01-01'

如果日期列的日期格式与 where 子句中的不同,则使用 FORMAT_DATE 函数使其相似。

【讨论】:

  • 我认为您的意思是:“如果列不是日期类型,则修复您的架构”?
  • eggyal: 不,我的意思是如果它的格式不是“2013-01-01”,那么在选择查询中使用这种格式,仅用于匹配目的
  • 如果日期格式不同,那么它将不匹配,这就是我建议将它们制作成相同格式的原因
  • 好吧,首先,如果date 还不是一种时间数据类型,那么就不能将DATE_FORMAT() 应用于它。也许您打算使用STR_TO_DATE()?但是,这样的函数调用处理起来非常昂贵,并且无法通过索引来辅助。更不用说将日期存储为字符串是一种糟糕的做法,这确实是我试图解决的糟糕建议。
  • 哎呀抱歉,是的,我想使用这个 STR_TO_DATE()。
猜你喜欢
  • 2010-10-26
  • 2011-07-21
  • 2021-04-27
  • 1970-01-01
  • 2017-08-11
  • 2017-10-08
  • 2011-09-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多