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をフォーマットされた日付として表示することもあるため、MySQLではなくPHPを使用して日付をフォーマットし、すべてのフォーマットを1か所に保持したいからです。このアプローチを使用しない唯一の理由は、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 に答える