AbYlog このページをアンテナに追加 RSSフィード

2007-03-15

[]interval型から日数を取得する

PostgreSQLのinterval型は時間間隔を表現するデータ型ですが、

時間間隔の表現が「1 month 2 days」のように月、日、時間が入った文字列で表現されます(内部的には月、日、時間それぞれ別々に数値で記録されています)。

今回たまたまこのintervalのデータから日数を取得する必要があったので、以下のようなことをしてみました。

SELECT EXTRACT(EPOCH FROM '1 month 2 days'::interval) / 86400;

結果は

 ?column? 
----------
       32
(1 row)

となります。

やっていることは非常に単純で、intervalを一度「秒数」に変換した後、86400秒(=1日の秒数)で割っているだけです。

・・・使いどころは非常に少ないと思いますが(笑)

kensanmailkensanmail 2013/01/14 11:46 任意の日付からその月の日数を算出するSQLを作るのに参考にさせていただきました。ありがとうございます。
Select EXTRACT(EPOCH FROM -- 1か月間を秒に変換
(
date_trunc('month', cast('2012/2/15' as date)) -- YYYY/MM/DDを日付型に変換して1日を取り出す
+ interval '1 month' -- 1か月を足す
- date_trunc('month', cast('2012/2/15' as date)) -- 1日を引く
)
)/86400;

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/T-ABYSS/20070315/1173960538