我正在努力为这一个找到正确的mysql查询......
我有一个名为'blog'的表,其中包含博客条目。每个条目都有一个名为“created”的日期时间列(YYYY-MM-DD HH:MM:SS)。我想在我的页面边栏上列出所有写入条目的不同月份年,以便用户可以轻松地从博客档案中找到旧条目。
我有一个用户定义的函数,我的BlogEntry类用它来查询数据库。根据查询,它返回一个记录数组。例如......
$entries = BlogEntry::find_by_sql("SELECT * FROM blog ORDER BY created DESC");
我可以使用什么查询来仅返回写入条目的不同月份?
我尝试了一些事情(没有运气),例如:
$months = BlogEntry::find_by_sql("SELECT DISTINCT MONTH(created) FROM blog");
非常感谢有关如何返回不同月份和年份的任何想法或建议!
更新: 也许我的问题是如何显示返回的记录。我一直在尝试以下......
<ul>
<?php foreach($months as $month): ?>
<li><?php echo $month->created; ?></li>
<?php endforeach; ?>
</ul>
我知道这看起来不对。我如何将其合成以列出Month-YYYY?
答案 0 :(得分:6)
$months = BlogEntry::find_by_sql("SELECT DATE_FORMAT(created, '%m-%Y') AS created_month FROM blog GROUP BY created_month");
还应该做这个伎俩吗?
答案 1 :(得分:2)
你可以使用它。
select distinct(DATE_FORMAT(date,'%m-%Y')) from table_name
where order by DATE_FORMAT(date,'%Y') asc,DATE_FORMAT(transaction_date,'%m') asc;
答案 2 :(得分:0)
对于MySQL,如下所示使用
SELECT DISTINCT(DATE_FORMAT(update_date,'%b %Y')) as archive_dt FROM tbl_articles