当前位置: 首页 > 面试题库 >

如何在PostgreSQL中生成月份列表?

楚宏胜
2023-03-14
问题内容

我有一个A带有startdate列的表,TIMESTAMP WITHOUT TIME ZONE我需要编写一个查询/函数来生成从MIN列的值到列的值的月份列表MAX

例如:

startdate
2014-12-08
2015-06-16
2015-02-17

将生成以下列表: (Dec-14,Jan-15,Feb-15,Mar-15,Apr-15,May-15,Jun-15)

我怎么做?我从未使用PostgreSQL生成不存在的数据…它一直在数据库中找到正确的数据…有什么想法可以做到这一点吗?它在查询中可行吗?


问题答案:

您可以使用以下generate_series()函数生成数据序列:

SELECT to_char(generate_series(min, max, '1 month'), 'Mon-YY') AS "Mon-YY"
FROM (
  SELECT date_trunc('month', min(startdate)) AS min, 
         date_trunc('month', max(startdate)) AS max
  FROM a) sub;

这会以漂亮的格式为每个月生成一行。如果您希望将其像一个列表,则可以将它们全部合并到一个外部查询中:

SELECT string_agg("Mon-YY", ', ') AS "Mon-YY list"
FROM (
  -- Query above
) subsub;

SQLFiddle在这里



 类似资料:
  • 问题内容: 我想生成一个包含两个日期之间所有月份的python列表,其输入和输出的格式如下: 问题答案: 更新: 根据一个评论的要求进行一些解释。这里存在三个问题:将日期解析为适当的数据结构();根据两个极端和步骤(一个月)获得日期范围;格式化输出日期()。该类型会使减法运算符重载,因此很有意义。结果是一个对象,代表两个日期之间的差异,并且该属性以天为单位表示此差异。没有属性,因此我们一次迭代一天

  • 问题内容: 我想生成一个日期列表,希望能与另一个表连接,但是我不知道要使用什么语法,类似于以下内容: 我想要日期,因此不必在客户端进一步处理数据。我正在使用它来显示类似于此的表: 问题答案: 日期清单 使用generate_series函数获取可以添加到日期的数字列表,以获取日期列表: 结果: 旋转 问题的后半部分涉及透视结果集- 将行数据转换为列数据。PIVOT和UNPIVOT是ANSI,但我目

  • 问题内容: 在PostgreSQL中,是否可以生成一系列重复数字?例如,我要生成数字1到10,每个数字重复3次: 问题答案: 您可以将其交叉加入一系列3:

  • 看完这篇博文https://blog . starkandwayne . com/2015/05/23/uuid-primary-keys-in-PostgreSQL/ 我想知道更多关于Django是如何生成uuid的,因为我用它们作为我的pk。嗯,根据文档,https://docs.djangoproject.com/es/1.9/ref/models/fields/#uuidfield,Dja

  • 问题内容: 下面的查询生成一行DNA序列 结果-dna CCCGGTTCTCCCCATGCAGG 我想生成10个随机DNA序列 问题答案: 像这样吗?

  • 我使用以下命令创建了一个名为hibernate_sequence的序列 这是我的hibernate注释dao 为了向表中插入新记录,hibernate正在生成错误的查询以获取下一个序列值。。Hibernate总是发出此查询。。不管我做什么。。 我使用的是oracle 10G,它总是报告以下错误。。 发出的查询应该是