1

テーブルにXというフィールドがあり、unixtime(php-> time())を格納しています。私の質問は:

DBからすべての月を一覧表示するにはどうすればよいですか(6.2009 8.2009など)。

そして私の2番目の質問は:

同じフィールドX(unixtimeを格納)の月と年に基づいてすべての情報を一覧表示するクエリを作成するにはどうすればよいですか。これは機能しないことはわかっていますが、理解しやすいでしょう:where date= '06.2009'

解決策はありますか?

4

3 に答える 3

1
  • すべての月を一覧表示:

    SELECT DISTINCT EXTRACT(YEAR_MONTH FROM FROM_UNIXTIME(X)) FROM MyTable;
    
  • 指定された年と月のすべての行を返します。

    SELECT * FROM MyTable
    WHERE EXTRACT(YEAR_MONTH FROM FROM_UNIXTIME(X)) = 200906;
    
于 2009-08-20T00:46:44.717 に答える
1

最初の質問に答えるには、グループ化してこれを行います。

SELECT FROM_UNIXTIME(timestamp_column, '%c.%Y') AS month, some_other_column FROM table_name GROUP BY month;

2番目の質問については、これは何をしようとしているかによって異なります。例えば:

SELECT AVG(payment), SUM(*), FROM_UNIXTIME(timestamp_column, '%c.%Y') AS month, some_other_column FROM table_name WHERE timestamp_column BETWEEN UNIX_TIMESTAMP(200906) AND UNIX_TIMESTAMP(200907) - 1 GROUP BY month;

各グループの支払いの平均と行数(合計)を返します。

特定の時間枠からグループ化されていない情報を取得するには、次のようにクエリを減らします。

SELECT payment, some_other_column FROM table_name WHERE timestamp_column BETWEEN UNIX_TIMESTAMP(200906) AND UNIX_TIMESTAMP(200907) - 1;
于 2009-08-20T00:47:16.900 に答える
1

これを試して

  1. SELECT FROM_UNIXTIME(X、'%m。%Y')FROM TABLE GROUP BY FROM_UNIXTIME(X、'%m。%Y')

  2. SELECT * FROM TABLE WHERE FROM_UNIXTIME(X、'%m。%Y')= '06 .2009'

さよなら

于 2009-08-20T00:50:22.147 に答える