2017-04-27 130 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 
相关问题