如何在PostgreSQL中调整SET intervalstyle(更改Interval Output)?

时间:2015-07-01 00:11:04

标签: postgresql intervals

我已阅读此在线PostgreSQL文档... Robvanderwoude 在8.5.5点关于如何调整默认的间隔输出。 。我的意思是默认间隔显示如下......

00:00:00.000 (if the timedifference is lower than a day or month or year)

1 day 00:00:00.000 (if the timedifference reaches days, but is lower than a month or a year)

1 month 1 day 00:00:00.000 (if the timediffence reaches months, but is lower than a year)

1 year 1 month 1 day 00:00:00.000 (if it reaches years, months, days)

it evens uses plurarl cases (years, mons, days) when their values are greater than one.

当选择(查询)此间隔值(作为文本)将其转换为适当的时间时,所有这些变体对任何其他应用程序都很困难。所以我希望postgresql总是显示年,月n天,即使它们的值为0(如果它可以显示间隔的日期部分可能会更好... 01-11-30,添加零到当值小于10时左侧

我知道我可以使用to_char()更改文本的间隔但是我真的想避免这种情况,我想要一些好的postgresql程序员告诉我是否有一种方法来调整Interval输出如postgresql文档中所述。

谢谢高级。

PD:关于该主题的另外两个链接 http://www.postgresql.org/docs/9.4/static/datatype-datetime.html#INTERVAL-STYLE-OUTPUT-TABLE https://my.vertica.com/docs/7.1.x/HTML/Content/Authoring/SQLReferenceManual/Statements/SET/SETDATESTYLE.htm

1 个答案:

答案 0 :(得分:3)

您可以设置间隔输出样式,但只能设置一些在输入时不明确的预定义格式之一,并且PostgreSQL知道如何解析为间隔。每the documentation这些是SQL标准间隔格式,PostgreSQL特定语法的两种变体,以及iso_8601间隔。

如果您想要熟悉且易于解析的内容,请考虑使用:

SET intervalstyle = 'iso_8601'

并使用现成的解析器获取ISO1601间隔。