2017-04-27 47 views
1

我需要一個與表中的月份和用戶關聯的值。我想對其執行查詢。我不知道是否有這種需求的列數據類型。如果不是這樣,我應該:PostgreSQL中的YYYY-MM列類型

  • 創建一個字符串字段,並建立年月級聯(2017-01)
  • 創建的int字段和構建年月級聯(201701)
  • 創建兩列(一年零一個月)
  • 在月初創建日期列(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 - 支持日期。

您可以隨時將它們轉換爲您想要的格式,獲取兩個值之間的差異,依此類推。

如果短語查詢爲:

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

然後,它可以很容易地採取(user_id, year_month)(year_month, user_id)優勢的指標。

1

如果你是在有意顯示值YYYY-MM formt你可以使用TO_CHAR(your_datatime_colum, 'YYYY-MM')

例如:

SELECT to_char(now(),'YYYY-MM') as year_month