8

特定の月の列価格の合計を取得するにはどうすればよいですか。

日付列はvarchar(10)で、日付形式はヨーロッパ(dd-mm-yy)です。

これが私のテーブルのサンプルです:

ここに画像の説明を入力してください

現在、私が使用するすべての価格の合計を選択するには:

case 'get':

            $q=mysql_real_escape_string($_GET['q']);
            $query="SELECT sum(price) FROM Fuel";

            $result = mysql_query($query);


            $json = array();
            while($row = mysql_fetch_array($result))
            {
                $json['price']=$row['price'];
            }
            print json_encode($json);




            mysql_close();


            break;

では、どうすれば09-2012月の列価格の合計を取得できますか。

4

2 に答える 2

10

まず、date列のデータ型を変更します(アプリケーションコードを適切に更新することを忘れないでください)。

ALTER TABLE Fuel ADD newdate DATE;
UPDATE Fuel SET newdate = STR_TO_DATE(date, '%d-%m-%Y');
ALTER TABLE Fuel DROP date, CHANGE newdate date DATE FIRST;

次に、次のことができます。

SELECT SUM(price) FROM Fuel WHERE date BETWEEN '2012-09-01' AND '2012-09-30'
于 2012-11-18T08:51:10.670 に答える
5

これはあなたのために働くでしょう:

SELECT 
  sum(price) 
FROM Fuel
WHERE datefield = 'somedate';

ただし、日付オブジェクトとしてではなく文字列リテラルとして比較されるため、日付パラメータに入力された形式に注意する必要があります。ただし、代わりにこれらの日付をデータ型の列に格納する必要がありますDATE

アップデート:

09のすべての月の合計を選択するにはどうすればよいですか?

特定の月のレコードのみを選択するには、次のMONTHようにMySQL関数を使用できます。

SELECT 
  SUM(price) 
FROM Fuel
WHERE MONTH(`date`) = 9;

SQLフィドルデモ

于 2012-11-18T08:44:42.030 に答える