从表中的datetime列中选择不同的日期

rvk*_*rvk 11 mysql sql

我有一张桌子

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
Run Code Online (Sandbox Code Playgroud)

并且需要一个查询,我以desc顺序返回不同日期的列表.我试着像这样制定一个查询

SELECT DISTINCT CAST(`date_posted` AS DATE) AS dateonly FROM table
Run Code Online (Sandbox Code Playgroud)

这给了我约会,但它们并不明显,并且有重复.

有任何想法吗?(使用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
Run Code Online (Sandbox Code Playgroud)

所以运行查询只会返回[2011-03-dd,2011-02-01](dd是任何一天)

为没有说明这一点而道歉.

Has*_*san 18

您的查询将返回您指定的唯一日期.如果你想获得唯一的MONTHS/YEARS,你应该以某种方式修改日期,每个日期成为一个月的第一天,或者你应该使用一些字符串表示,如'YYYY-MM'.对不起,我不能写一个确切的代码如何做到这一点,因为我没有在mysql上开发,但我认为这应该让你在某处:)

SELECT DISTINCT YEAR(date_posted), MONTH(date_posted) FROM table
Run Code Online (Sandbox Code Playgroud)


Pen*_*m10 6

SELECT DATE(`date_posted`) AS dateonly 
FROM   table 
GROUP  BY DATE(`date_posted`) 
Run Code Online (Sandbox Code Playgroud)


Ric*_*iwi 6

工作实例

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;
Run Code Online (Sandbox Code Playgroud)

输出量

"cast(dt as date)"
"2011-03-08"
"2011-03-07"
"2011-03-09"
Run Code Online (Sandbox Code Playgroud)

查询不同的年份-月份

select date(date_format(dt, '%Y-%m-1')) as dt
from dts
group by dt;
Run Code Online (Sandbox Code Playgroud)

输出(结果是日期列,日期设置为“ 1”)

2011-03-01
Run Code Online (Sandbox Code Playgroud)