2017-04-27 5 views
1

テーブル内の月とユーザに関連付けられた値が必要です。そして私はそれについての質問をしたいと思います。このタイプの必要性のための列データ型があるかどうかはわかりません。そうでない場合、私必要があります。PostgreSQLのYYYY-MMカラム型

  • は、文字列フィールドを作成し、2つの列を作成(int型のフィールドを作成し、年、月の連結(201701)
  • を構築年 - 月の連結(2017から01)
  • を構築します1年1か月)
  • 月の初めに日付の列を作成します(2017-01-01 00:00:00)
  • 他に何かがありますか?
  • 目的は(擬似-SQL)のようなクエリを実行することです

SELECT val FROM t WHERE year_month = THIS_YEAR_MONTH and user_id='adc1-23...'; 
+0

日付列を使用し、date_resolutionを追加列は、その日付の解決を示します。その後、それに基づいてあなたの日付の計算を行います。 –

答えて

4

私はこの問題についてあまりにもハード考え、ちょうど月の最初の日付/時刻を使用していないお勧めします。 Postgresには、日付をサポートするために、date_trunc()からage()まで、+ intervalから、多くの日付固有の機能があります。

これは、必要な形式に簡単に変換したり、2つの値の差を取得したりすることができます。

場合フレーズとしてクエリ:

where year_month = date_trunc('month', now()) and user_id = 'adc1-23...' 

が、それは容易に(user_id, year_month)または(year_month, user_id)にインデックスを利用することができます。

1

あなたが( 'YYYY-MM'、your_datatime_colum)TO_CHAR使用することができますformt YYYY-MMでの表示値に興味がある場合

例:

SELECT to_char(now(),'YYYY-MM') as year_month 
関連する問題