2011-03-17 50 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 
相關問題