【问题标题】:SQL query find for how many days are there blog entriesSQL查询查找有多少天的博客条目
【发布时间】:2012-03-22 05:36:24
【问题描述】:

我正在尝试想出一种方法来查询我的博客数据库,以找出特定范围内的哪些日子有帖子。

例如。如果我的日期是 2012 年 1 月 1 日 - 2012 年 1 月 30 日,那么这 30 天中有多少天至少包含一篇博文?

我的日期存储为:0000-00-00 00:00:00

【问题讨论】:

    标签: php mysql sql date


    【解决方案1】:
    select count(date_column)
    from your_table
    where date_column between '2012-01-01' and '2012-01-30'
    group by date_column
    having count(date_column) > 0
    

    【讨论】:

    • 应该加一个having count(date_column) > 0
    • 为什么我们需要having count(date_column) > 0?我认为上述查询生成的所有行的计数至少为 1。您能否提供一些可以为 0 的示例数据?
    • 如果他的日期存储为 0000-00-00 00:00:00,那不是日期时间吗?因此,如果 1 月 15 日有 90 个帖子,每个帖子在 date_column 中都有不同的值,那么您将获得至少 90 个记录,对吧?
    • @nikhil500:你可能是对的,每当我像这样需要一定数量的分组时,为了清楚起见,我总是添加有。
    【解决方案2】:

    我想只是为了得到有帖子的天数

      SELECT Count(distinct DATE(date_column))
      FROM your_table
      WHERE DATE_COLUMN > '2012-01-01' and DATE_COLUMN < '2012-02-01'
    

    要获得它们的列表,更像是 jergen 写的:

     SELECT date(date_column)
     FROM your_table
     GROUP BY date(date_column)
    

    date 是一个 mysql 函数,用于从 datetime 列中获取日期(我没有尝试过,只是通过阅读手册)

    【讨论】:

    • 当我用 sujal 的 BETWEEN 代码替换 WHERE 日期内容时,第一个完全符合我的要求。非常感谢!我的脑袋一直在转,想弄清楚我该怎么做。
    • @Adam,所以我应该编辑我的答案,说“2012-01-01 和 2012-02-01 之间的日期列在哪里”,对吗?我不知道为什么它不起作用(除非你复制的内容是在我编辑之前复制的,我第一次发布时将日期格式错误)
    • 是的!确切地。也不知道为什么,但我认为无论如何,两者之间更有意义。
    【解决方案3】:
    SELECT count(*) FROM `table_name` 
    where 
        mydate>='2011-03-17 06:42:10' and mydate<='2011-03-17 06:42:50';
    

    或之间使用

    SELECT count(*) FROM `table_name` 
    where 
        mydate between '2011-03-17 06:42:10' and '2011-03-17 06:42:50';
    

    【讨论】:

    • 当 OP 想要统计帖子的天数时,你不打算统计帖子吗?
    猜你喜欢
    • 1970-01-01
    • 2016-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-02
    • 1970-01-01
    • 2020-03-26
    • 2020-09-25
    相关资源
    最近更新 更多