获取每个月的数据

时间:2013-02-18 03:26:58

标签: php mysql

所以我想做的基本上是这样的:

月和年:

- 该月份和年份发送的所有数据

例如: 2013年2月:

- 此日期的帖子

2013年3月:

- 此日期的帖子

等等。

我的桌子上有一个日期列,它具有以下格式: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);

这给了我日期的结果,但我无法弄清楚如何在每个日期下输入正确的数据。

2 个答案:

答案 0 :(得分:0)

使用DATE_FORMAT mysql函数。

示例

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

然后调试query的结果,您会看到monthyear的两个额外列,然后将其显示为您的愿望。

如果date_fieldvarchar,则使用str_to_date mysql函数。

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

OP问题更新

尝试GROUP_CONCAT

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

答案 1 :(得分:0)

  1. 使用将varchar日期字段转换为完全日期 str_to_date功能
  2. 使用DATE_FORMAT,您可以选择月份明智的记录
  3. 其中$input%Y-%m格式// ex:02-2013-> 2013年2月。
  4. SELECT * FROM `table` 
    WHERE DATE_FORMAT(str_to_date(`date_column`, '%d/%m/%Y'), '%Y-%m')= '".$input."';