【问题标题】:How to extract unique days (from which there is data in the db) from MySQL?如何从 MySQL 中提取唯一日期(数据库中有数据)?
【发布时间】:2011-10-27 23:00:23
【问题描述】:

我有一个 MySQL 数据库,其中包含一个“created_at”列。该列保存每个条目的 unix 时间戳。在某些日子里,已经进行了许多条目。在其他方面,没有。我想编译一个日期列表,其中至少有一个条目进入数据库。我在 phpMyAdmin(在 Mysql 5.0 上)中尝试了以下操作,但它给了我一个错误。

SELECT UNIQUE(DATE_FORMAT(`created_at`, '%d/%m/%Y')) FROM `entries`

为了规避错误,我删除了 UNIQUE 部分,并尝试:

SELECT DATE_FORMAT(`created_at`, '%d/%m/%Y') FROM `entries` WHERE entry_id = 3

这给了我一个 NULL 值,这是错误的,因为 entry_id 3 的 created_at 值是 1298050881。为什么这两个查询不起作用?

第三,最终,我想编制一份每天输入的条目数量的列表,例如:

2011-10-16 1,432
2011-10-17   502
2011-10 18 3,533

为此,我需要第一个查询才能工作。所以我请求你的帮助。任何帮助将不胜感激:)

【问题讨论】:

    标签: mysql sql phpmyadmin


    【解决方案1】:

    尝试分组:

    SELECT
      date_format(created_at, '%d/%m/%Y') AS theDate, 
      count(*) as theCount
    FROM
      entries
    GROUP BY
      theDate
    HAVING theCount > 1;
    

    如果您想订购结果集,只需将以下内容添加到末尾:

    ORDER BY theCount desc;
    

    【讨论】:

      【解决方案2】:

      使用 GROUP BY 和 COUNT:

      SELECT
          DATE_FORMAT(FROM_UNIXTIME(created_at), '%d/%m/%Y') AS date,
          COUNT(*) AS cnt
      FROM entries
      GROUP BY date
      

      【讨论】:

      • 太棒了,谢谢。一个问题,寿。为什么 PHPMyAdmin 在没有完美工作的情况下会在表名周围使用反引号 (`)?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-04
      • 1970-01-01
      • 2013-04-02
      • 1970-01-01
      • 2014-04-09
      • 2016-09-01
      • 1970-01-01
      相关资源
      最近更新 更多