我希望显示按月分组的一堆记录的数量,月份和年份。我使用以下查询,然后使用PHP来显示数据。
SELECT COUNT(*), YEAR(award_date) AS award_date_year, MONTH(award_date) AS award_date_month
FROM projects_sell
GROUP BY YEAR(award_date),MONTH(award_date) ASC
使用以下查询并使用PHP从日期时间中提取月份和年份会更好吗?我非常倾向于这样做,我将解释我对“更好”的解释。我一次只显示100条记录,所以只要两种解决方案合理接近,速度就不成问题。我的主要原因是因为我有时也将award_date显示为格式化日期,我希望使用PHP而不是MySQL格式化日期,并希望将所有格式保存在一个位置。我不使用这种方法的唯一原因是,如果award_date不属于给定的月/年,或者没有在award_date上使用某种聚合函数会导致某种问题。
SELECT COUNT(*), award_date
FROM projects_sell
GROUP BY YEAR(award_date),MONTH(award_date) ASC
答案 0 :(得分:0)
由于年份和月份是从award_date
中提取的,award_data
将始终属于该年份和月份。
但是,由于您仅按年份和月份进行分组,因此MySQL可能会选择任何日期。因此,如果2012年5月每天都有奖励,则award_date
可以是您在查询结果中的30个日期中的任何一个。没有办法告诉它会是哪一个。
所以我认为在查询中返回年份和月份比较干净,因为查询结果仅基于那些而不是确切的日期。
答案 1 :(得分:0)
使用PHP DATE()并存储通过该函数的值。
<?php
function myAwardDate($myDate)
{
echo date("Y/m/d",$myDate) . "<br>";
echo date("Y.m.d",$myDate) . "<br>";
echo date("Y-m-d",$myDate);
}
?>
将您的Award_Date字符串传递给此日期函数,然后您将获得任何日期格式。