Как извлечь уникальные дни (из которых есть данные в БД) из MySQL? - PullRequest
0 голосов
/ 28 октября 2011

У меня есть база данных MySQL, в которой, среди прочего, содержится столбец "made_at". Столбец содержит метку времени Unix для каждой записи. В некоторые дни было сделано много записей. На других нет. Я хочу составить список дат, в которые хотя бы одна запись была внесена в базу данных. Я попробовал следующее в phpMyAdmin (на Mysql 5.0), но это дает мне ошибку.

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

Чтобы обойти ошибку, я удалил УНИКАЛЬНУЮ часть и попытался:

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

Это вернуло мне значение NULL , что является ошибкой, поскольку значение create_at для entry_id 3 равно 1298050881. Почему эти два запроса не работают?

В-третьих, в конце концов, я бы хотел составить список из числа записей, сделанных за день, что-то вроде:

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

Для этого мне нужны первые запросы для работы. Поэтому я прошу вашей помощи. Любая помощь будет принята с благодарностью:)

Ответы [ 2 ]

1 голос
/ 28 октября 2011

Попробуйте группировать по:

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;
1 голос
/ 28 октября 2011

Используйте GROUP BY и COUNT:

SELECT
    DATE_FORMAT(FROM_UNIXTIME(created_at), '%d/%m/%Y') AS date,
    COUNT(*) AS cnt
FROM entries
GROUP BY date
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...