是否有任何汇总功能来格式化日期和时间时间(但我对间隔更感兴趣)是以11:10:45
到11h 10m 45s
之类的自定义方式或类似PostgreSQL中的方式?或者我需要自己提取零件或连接它们?
number of days
interval
特别出现问题
答案 0 :(得分:1)
查看to_char函数的完整文档,它可以执行您想要的操作
http://www.postgresql.org/docs/9.1/interactive/functions-formatting.html
答案 1 :(得分:1)
你的问题不太清楚。如果要检索
间隔天数
您可以使用EXTRACT
:
SELECT EXTRACT(day from '7 week'::interval) AS d
d
----
49
请注意,这会提取给定的间隔的子字段。间隔未标准化或合理化。为了证明间隔的合理性,首先使用justify_interval()
SELECT EXTRACT(day from justify_interval('7 week'::interval)) AS d;
d
----
19
从49天中扣除了30个月的一个月。
因此,这些表达式返回0天:
SELECT EXTRACT(day from '24h'::interval);
SELECT EXTRACT(day from '1 months'::interval);
如果您只想要日期之间的天数:
SELECT '2012-3-23'::date - '2012-3-1'::date AS d;
d
----
22
您只需减去日期即可获得一个整数,表示两者之间的天数。
或者在时间戳之间:
SELECT EXTRACT (day from '2012-03-25 23:12'::timestamp
- '2010-03-01 03:34'::timestamp) AS d;
d
-----
755
答案 2 :(得分:0)
尝试设置PostgreSQL设置的不同值 intervalstyle :
db=# show intervalstyle ;
IntervalStyle
---------------
postgres
db=# select interval '3 days 11:10:45';
interval
-----------------
3 days 11:10:45
db=# set intervalstyle = 'postgres_verbose';
SET
db=# select interval '3 days 11:10:45';
interval
-----------------------------------
@ 3 days 11 hours 10 mins 45 secs
db=# set intervalstyle = 'iso_8601';
SET
db=# select interval '3 days 11:10:45';
interval
---------------
P3DT11H10M45S