Выбор отдельных дат из столбца даты и времени в таблице - PullRequest
9 голосов
/ 17 марта 2011

У меня есть таблица

id | message | date_posted
1  | testing | 2011-03-08 03:15:13
2  | testing | 2011-03-06 03:15:13
3  | testing | 2011-03-08 03:15:13

И мне нужен запрос, где я возвращаю список различных дат в порядке убывания.Я попытался сформулировать запрос следующим образом:

SELECT DISTINCT CAST(`date_posted` AS DATE) AS dateonly FROM table

Это дает мне даты, но они не различаются и имеют дубликаты.

Есть идеи?(Используя php / mysql)

ОСНОВНОЕ РЕДАКТИРОВАНИЕ:

Забыл важную информацию.Я пытаюсь получить уникальные даты, основанные на месяце и году.

2011-03-08 03:15:13
2011-03-06 03:15:13
2011-03-02 03:15:13
2011-03-01 03:15:13
2011-02-01 03:15:13

Таким образом, выполнение запроса вернет только [2011-03-dd, 2011-02-01] (dd - любой день)

Прошу прощения за то, что не сказал этого.

Ответы [ 4 ]

17 голосов
/ 17 марта 2011

Ваш запрос будет возвращать уникальные ДАТЫ, как вы указали. Если вы хотите получить только уникальные МЕСЯЦЫ / ГОДЫ, вам следует либо изменить даты таким образом, чтобы каждая дата стала первым днем ​​месяца, либо вам просто нужно использовать строковое представление типа «ГГГГ-ММ». Извините, я не могу написать вам точный код, как это сделать, так как я не разрабатываю на MySQL, но я думаю, что это должно вас где-то:)

SELECT DISTINCT YEAR(date_posted), MONTH(date_posted) FROM table
6 голосов
/ 17 марта 2011

Рабочий пример

create table dts (dt datetime);
insert dts select '2011-03-08 03:15:13';
insert dts select '2011-03-07 03:15:13';
insert dts select '2011-03-09 03:15:13';
insert dts select '2011-03-08 03:15:13';

select distinct cast(dt as date) from dts;

выход

"cast(dt as date)"
"2011-03-08"
"2011-03-07"
"2011-03-09"

Запрос на отдельный год-месяц

select date(date_format(dt, '%Y-%m-1')) as dt
from dts
group by dt;

Вывод (результат - столбец даты, в котором день установлен на «1»)

2011-03-01
6 голосов
/ 17 марта 2011
SELECT DATE(`date_posted`) AS dateonly 
FROM   table 
GROUP  BY DATE(`date_posted`) 
2 голосов
/ 08 мая 2017
SELECT DISTINCT date(date_format(COLUMN_NAME, '%Y-%m-%d')) as uniquedates from TABLE_NAME
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...