我有一张桌子
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是任何一天)
为不说明这一点道歉。
答案 0 :(得分:17)
您的查询将返回您指定的唯一日期。如果你想获得唯一的MONTHS / YEARS,你应该以某种方式修改你的日期,每个日期成为一个月的第一天,或者你应该使用像'YYYY-MM'这样的字符串表示。对不起,我不能写一个确切的代码如何做到这一点,因为我没有在mysql上开发,但我认为这应该会让你到处:)
SELECT DISTINCT YEAR(date_posted), MONTH(date_posted) FROM table
答案 1 :(得分:6)
SELECT DATE(`date_posted`) AS dateonly
FROM table
GROUP BY DATE(`date_posted`)
答案 2 :(得分: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;
输出
"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