2

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

月份和年份:

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

例如: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);

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

4

2 回答 2

0

使用DATE_FORMATmysql 功能。

例子

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

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

如果date_fieldvarchar则使用str_to_datemysql函数。

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;
于 2013-02-18T03:53:04.327 回答
0
  1. 使用str_to_date函数将 varchar 日期字段转换为精确日期
  2. 使用DATE_FORMAT您可以选择按月记录
  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."';
于 2013-02-18T03:54:32.113 回答