2012-04-30 19 views
0

&の日付をフォーマットする集計関数は11:10:45から11h 10m 45sなどのカスタム方法でPostgreSQLのようなものですか?または私は部品を抽出するか、自分でそれらを連結する必要がありますか?PostgreSQLの書式化時間の集計関数の日付( 'date_format')

問題は、TO_CHAR関数の完全なマニュアルをチェックinterval

+0

は、なぜあなたは、集計関数が必要なのでしょうか?ここにあなたのSQLを投稿できますか? – vyegorov

+0

質問の「集計」は誤解であり、OPはプレーンな機能を求めていると私は推測しています。 –

+0

実際、私はすでにこの目的のために 'AVG()'や 'SUM()'のようなfunctinがあると思っていました。だから私はそこに集計した。タイトルから削除する必要がありますか? –

答えて

1

number of daysで特別に発生し、それはあなたが

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

+0

はい、彼らは同じ間隔で同じように働くでしょうか?私は間隔で「数日」を取得したい場合はどうすればいいですか?ここで 'DDD'は' day of year(001-366) 'を返します。 –

+0

日数フォーマッタが組み込まれているとは思いません。あなたは、 '(抽出する(区間 '三日' /(24 * 3600)からのエポック):: int'またはそれに類するものを使用して秒単位で構築する必要があります –

0

するIntervalStyle設定のPostgreSQLの異なる値を設定してみてくださいやりたいことができます

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 
1

あなたの質問はあまり明確ではありません。あなたは間隔

に日の

番号を検索したい場合は、EXTRACTを使用することができます。

SELECT EXTRACT(day from '7 week'::interval) AS d 

d 
---- 
49 

注意与えられたとして、これは間隔のサブフィールドを抽出することを。間隔は正規化されていないか、正当化されていません。 30日の月justify_interval()

SELECT EXTRACT(day from justify_interval('7 week'::interval)) AS d; 

d 
---- 
19 

間隔最初の使用を正当化するために、49日から控除されています。あなただけ取得するには日付を引くことができ

SELECT '2012-3-23'::date - '2012-3-1'::date AS d; 

d 
---- 
22 

:あなただけの日付の間にある日の数をしたい場合は

SELECT EXTRACT(day from '24h'::interval); 
SELECT EXTRACT(day from '1 months'::interval); 

は、したがって、これらの式は、0日を返しますその間の日数を示す整数。

またはタイムスタンプ間:

SELECT EXTRACT (day from '2012-03-25 23:12'::timestamp 
         - '2010-03-01 03:34'::timestamp) AS d; 

    d 
----- 
755