0

PostgreSQL のよう11:10:45なカスタムの方法で日付と時刻をフォーマットする集計関数はありますか (ただし、間隔にもっと興味があります) 。11h 10m 45sまたは、パーツを抽出するか、自分で連結する必要がありますか?

問題は特にで発生number of daysしますinterval

4

3 に答える 3

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
于 2012-04-30T23:32:23.087 に答える
1

to_char 関数の完全なドキュメントをチェックしてください。それはあなたが望むことをすることができます

http://www.postgresql.org/docs/9.1/interactive/functions-formatting.html

于 2012-04-30T19:46:24.223 に答える
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
于 2012-04-30T20:19:04.410 に答える