0

我希望显示按月分组的一堆记录的数量、月份和年份。我正在使用以下查询,然后使用 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
4

2 回答 2

0

由于年份和月份是从 中提取的award_dateaward_data因此将始终落在该年份和月份内。

但是,由于您只按年和月分组,MySQL 可能会选择任何日期。因此,如果 2012 年 5 月的每一天都有奖励,award_date则可以是结果查询中这 30 个日期中的任何一个。没有办法告诉它会是哪一个。

所以我认为在查询中返回年份和月份更清晰,因为查询结果仅基于这些而不是确切日期。

于 2013-01-18T15:13:40.267 回答
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 字符串传递到此日期函数中,然后您将获得任何日期格式。

于 2013-01-18T15:16:36.367 回答