按“月、年”返回数据的SQL查询

按“月、年”返回数据的SQL查询,sql,postgresql,Sql,Postgresql,我将数据库中的数据存储为以下格式 id period_start_date period_end_date 1 1/1/17 0:00 1/31/2017 23:59 1 2/1/17 0:00 2/28/2017 23:59 1 3/1/17 0:00 3/31/2017 23:59 1 4/1/17 0:00 4/30/2017 23:59 我想在UI中以下拉列表的形式获取这些数据 January 201

我将数据库中的数据存储为以下格式

id  period_start_date   period_end_date
1   1/1/17 0:00         1/31/2017 23:59
1   2/1/17 0:00         2/28/2017 23:59
1   3/1/17 0:00         3/31/2017 23:59
1   4/1/17 0:00         4/30/2017 23:59
我想在UI中以下拉列表的形式获取这些数据

January 2017
February 2017
March 2017
April 2017
任何人都可以让我知道,如果有一种方法来获取上述格式的查询中的数据

用于获取月份和年份。您不能在月份和年份中使用一个调用to_char,因为月份填充了黑色空间。你的月份在左边,所以你需要修剪它

更新以从表中选择
所以周期结束日期总是一个月的最后一天?是的,它总是一个月的最后一天。那么我的答案应该对你有用。当您存储第一天的时候,存储一个月的最后一天是一种浪费。尽管@EvanCarroll谢谢,您能分享完整的查询吗?我在查询中看不到表名?这应该是一个函数吗?只需将FROM值替换为t,使用FROM表即可。您没有给我要使用的表的名称。谢谢Evan的快速响应,我知道您现在正在尝试做什么。但当我运行它时,我得到了一个语法错误,如下所示:输入行末尾的SQL错误:错误:语法错误2:我是postgressql新手,不确定是什么语法错误。但我仍然会继续,并为您的快速响应和及时更新打分将\d表的结果粘贴到您的问题中。好的,看起来问题是月份,当我注释掉第一部分时,它只显示年份。SELECT-trimto_charperiod_start_date,“Month”-| |“| extractyear FROM period_start_date FROM table查询SELECT extractyear FROM period_start_date FROM table成功返回年份,但月份似乎出了问题。您的模式可能不是存储日期,而是文本类型。再次粘贴\d表的结果
SELECT trim(to_char(period_start_date, 'Month') ||
  ' ' ||
  extract(year FROM period_start_date)
FROM (
  VALUES ('1/1/17 0:00'::date)
) AS t(period_start_date);
SELECT trim(to_char(period_start_date, 'Month') ||
  ' ' ||
  extract(year FROM period_start_date)
FROM table;