所以我想做的基本上是这样的:
月和年:
- 该月份和年份发送的所有数据
例如: 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);
这给了我日期的结果,但我无法弄清楚如何在每个日期下输入正确的数据。
答案 0 :(得分:0)
使用DATE_FORMAT
mysql函数。
示例强>
SELECT DATE_FORMAT(date_field,'%M') as Month,DATE_FORMAT(date_field,'%Y') as Year FROM table_name
然后调试query
的结果,您会看到month
和year
的两个额外列,然后将其显示为您的愿望。
如果date_field
为varchar
,则使用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)
$input
为%Y-%m
格式// ex:02-2013-> 2013年2月。SELECT * FROM `table` WHERE DATE_FORMAT(str_to_date(`date_column`, '%d/%m/%Y'), '%Y-%m')= '".$input."';