2013-02-18 72 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."';