2009-08-20 5 views
1

私はXと呼ばれる私のテーブルにフィールドを持っており、私はunixtime(php-> time())を保存しています。 6.2009 8.2009など。Unixtime&mysql

そして、私の2番目の質問は次のとおりです:、何かのように

がどのように私は私のDBからのすべての月を一覧表示することができます: 私の質問は

どのようにすることができますdate = '06 .2009 '

(私はunixtimeを保存します)、同じフィールドXの月と年に基づいてすべての情報を一覧表示するクエリを作成します。

どのような解決策ですか?

答えて

1
  • リストのすべての月:

    SELECT * FROM MyTable 
    WHERE EXTRACT(YEAR_MONTH FROM FROM_UNIXTIME(X)) = 200906; 
    
+0

2番目のクエリのWHERE句にはフルテーブルスキャンが必要ですか? –

+0

はい、私はそう信じています。 EXPLAINを使用してクエリを分析し、MySQLのオプティマイザがどのように処理するかを確認する必要があります。 –

1

あなたの最初の質問に答えるために、あなたがこれをするでしょう:年与え&月と

SELECT DISTINCT EXTRACT(YEAR_MONTH FROM FROM_UNIXTIME(X)) FROM MyTable; 
  • 戻るすべての行グループ:

    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; 
    
  • 1

    はテーブルからこの

    1. SELECT FROM_UNIXTIME(X、 '%メートル%のY')を試してみてください:

      はそうのようなクエリを減らす、特定の時間枠からグループ化されていない情報を取得するにはFROM_UNIXTIME BY GROUP(X、 '%M。%のY')テーブルから

    2. SELECT * WHERE FROM_UNIXTIME(X、 '%M。%のY')= '06.2009'

    bye

    関連する問題