2013-02-18 70 views
2

所以我想要做的基本上是這樣的:獲取數據每月

月份和年份:

-All在該月和年

例如發送的數據: 月2013:

在此日期

2013年3月-The帖子

- 此日期的帖子

等等。

我有我的表中的日期列,它具有以下格式:day.month.year

我使用PHP和MySQL。

我有我自己的MVC框架,我正在使用。我會簡化它,使它在這裏變得更加穩定。該函數來獲取數據:

function selectAll($sql){ 

    $find = $this->prepare($sql);  
    $find->execute();      
    $fetchdata = $find->fetchAll(PDO::FETCH_ASSOC);   
    return $fetchdata; 
} 

和代碼來獲取日期:

$sql = "Select YEAR(Date) AS year, MONTH(Date) AS month, Headline from blog"; 
$data = $this->db->selectAll($sql); 
foreach($data as $key => $value) { 
     $date[] = $value['month'].'.'.$value['year']; 

     } 
$dateunique = array_unique($date); 

這給我的日期的結果,但我無法弄清楚如何把每個日期下的正確數據。

+0

你只需要執行'SELECT * FROM tableName'和formmating將在'處理PHP' – 2013-02-18 03:27:57

+0

日期欄不是日期嗎?它是一個'varchar'? – 2013-02-18 03:29:40

+0

是的,它是varchar – cemcetin 2013-02-18 03:32:03

回答

0

使用DATE_FORMAT mysql函數。

query

SELECT DATE_FORMAT(date_field,'%M') as Month,DATE_FORMAT(date_field,'%Y') as Year FROM table_name

,然後調試結果,你會看到兩個額外列monthyear然後顯示它作爲您的願望。

if date_field is varchar then then use str_to_date mysql function。

​​

OP問題更新

嘗試GROUP_CONCAT

SELECT 
*, 
GROUP_CONCAT(created) AS month 
FROM 
table_name 
GROUP BY MONTH(created) DESC;
+0

好吧我已經得到這部分。當我有年份和月份時,我把它們放在一個數組中,並使用array_unique函數刪除了重複項。現在我很困惑如何獲取每個月的數據 – cemcetin 2013-02-18 04:03:58

+0

你能否更新問題以便我們能更好的理解。 – 2013-02-18 04:07:15

+0

我編輯了這個問題。 – cemcetin 2013-02-18 04:20:35

0
  1. 使用 str_to_date功能
  2. 使用DATE_FORMAT轉換的VARCHAR日期字段到確切的日期,你可以選擇一個月明智記錄
  3. 哪裏$input%Y-%m格式//例如:02-2013-> 2013年2月
SELECT * FROM `table` 
WHERE DATE_FORMAT(str_to_date(`date_column`, '%d/%m/%Y'), '%Y-%m')= '".$input."';