2011-03-17 38 views
6

我有一个表选择从datetime列不同的日期表中的

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)

MAJOR编辑:

忘记的一个重要信息。我试图根据月份和年份获得独特的日期。

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

该查询为我工作 - 有你简化了你的查询?发布完整查询 – RichardTheKiwi 2011-03-17 06:52:24

回答

14

您的查询会按照您的指定返回唯一的DATES。如果你想获得唯一的MONTHS/YEARS,你应该以某种方式修改你的日期,每个日期变成月份的第一天,或者你应该只用一些字符串表示,比如'YYYY-MM'。对不起,我不能给你写一个确切的代码是如何做到这一点,因为我不上MySQL的发展,但我认为这应该让你的地方:)

SELECT DISTINCT YEAR(date_posted), MONTH(date_posted) FROM table 
+0

结束使用此解决方案,谢谢。理查德aka cyberkiwi的解决方案也起作用。 – rvk 2011-03-17 07:18:54

6
SELECT DATE(`date_posted`) AS dateonly 
FROM table 
GROUP BY DATE(`date_posted`) 
+0

这似乎并没有抓住独特的日期,与我原来的查询效果相同。 – rvk 2011-03-17 06:50:37

+0

向我们展示您的全表架构和示例数据,并按照原样使用查询。这必须工作。 – Pentium10 2011-03-17 06:56:04

+0

请阅读我的更新,我忘了添加一个主要条件。您的查询绝对适用于我所问的内容,但我忘了提及一个额外的细节。 – rvk 2011-03-17 06:59:38

3

工作实施例

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 
+0

我在我的帖子中做了一个主要的修改,对造成的不便深表歉意。 – rvk 2011-03-17 07:02:32

+0

@Russ回答更新 – RichardTheKiwi 2011-03-17 07:06:56

0
SELECT DISTINCT date(date_format(COLUMN_NAME, '%Y-%m-%d')) as uniquedates from TABLE_NAME 
相关问题