このセクションでは、 PostgreSQL 間隔データ型、 そして私たちも見ます 例 の 間隔データ型。 主に使用されるインターバル 機能 、 例えば、 NOW()、TO_CHAR()、EXTRACT()、justify_days()、justify_hours()、justify_interval()。 の 入出力 PostgreSQL 間隔値の形式。
PostgreSQL の間隔データ型とは何ですか?
PostgreSQL では、 間隔 時間を格納および展開するために使用される別のタイプのデータ型です。 年、月、日、時、分、秒、 など。そして、 月日 値は 整数値 、一方、 2番目のフィールド することができます 分数の値。
PostgreSQL 間隔データ型の値には次のものが含まれます。 16バイトのストレージ サイズ。- の許容範囲で期間を保存するのに役立ちます。 178000000年から178000000年まで 年。
会社と会社の違い
注: 2 番目のフィールドで取得される小数部の桁数は、精度 p として知られています。
PostgreSQL Interval データ型の構文
PostgreSQL の Interval データ型の構文は次のとおりです。
@ interval [ fields ] [ (p) ]
上記の構文には次のパラメータがあります。
パラメータ | 説明 |
---|---|
田畑 | field パラメータは時間を表示するために使用されます。 |
p | P は精度値を表示するために使用されます。 |
@ | @ パラメータはオプションのパラメータなので無視できます。 |
Interval 値をどのように記述するかをより深く理解するために、サンプル例を見てみましょう。 と @パラメータと@パラメータなし :
@interval '6 months before'; @interval '2 hours 30 minutes';
または
interval '6 months before'; interval '2 hours 30 minutes';
注: 上記のステートメントは両方とも互いに対応するため、使用できます。さらに、間隔値は、0 から 6 までの許容範囲で選択的な精度値 p を持つことができます。
PostgreSQL の Interval データ型の例
どのように機能するかを理解するために 1 つのサンプル例を見てみましょう。 PostgreSQL 間隔データ型 動作します。
以下の例では、次の時間を見つけようとします。 2時間30分前に、 で 昨年の現在時刻 ;次のコマンドを使用します。
SELECT now(), now() - INTERVAL '6 months 2 hours 30 minutes' AS '2 hours 30 minutes before last year';
出力
上記のコマンドを実行すると、以下の出力が表示されます。 昨年は2時間30分前 :
間隔データ型の主な例を見て、その仕組みを理解しました。ここで、次の入力および出力形式を見てみましょう。 間隔の値。
まず、次のことを理解します。 入力形式の PostgreSQL 間隔値 :
PostgreSQL 間隔の入力形式
PostgreSQL には次のものがあります。 冗長な構文、 これは間隔値を書き込むのに役立ちます。
quantity unit [quantity unit...] [direction]
上記の構文で使用される以下のパラメーターがあります。
パラメータ | 説明 |
---|---|
量 | あ 量 は数値であり、次のような記号も受け入れます + または - |
ユニット | の ユニット どれでも構いません ミレニアム、世紀、10年、年、月、週、日、時、分、秒、ミリ秒、マイクロ秒、 または略語は次のようになります y、m、dなど 複数形は次のようになります。 月、日 、など。 |
方向 | の 方向 パラメータは次のとおりです ago または空の文字列。 |
注: 上記の構文は間隔出力形式にも使用され、postgres_verbose として知られています。
以下の例では、 冗長な構文 :
INTERVAL '1 year 5 months 5 days'; INTERVAL '1 weeks ago';
ISO 8601 間隔形式
上記の冗長な構文に加えて、次の助けを借りて間隔値を記述します。 ISO 8601対応 PostgreSQL では、次の 2 つの方法が提供されます。
ISO 8601 の指定子の形式は次のとおりです。
P quantity unit [ quantity unit ...] [ T [ quantity unit ...]]
上記の形式では、必須の間隔値は 文字P 、 そしてその 文字T を定義するために使用されます 時刻単位 。
以下の表に、 ISO 8601 間隔 単位の略称:
略語 | 説明 |
---|---|
そして | 年 |
M | 月(日付部分) |
で | 週間 |
D | 日々 |
H | 時間 |
M | 分(時間部分) |
S | 秒 |
注: M は、文字 T の前か後ろかに応じて、月または分になります。
の例を見てみましょう ISO 8601 指定子 理解を深めるためのフォーマット:
の ISO 8601 指定子の形式 の間隔で書き込むことができます 5年4ヶ月3日2時間1分1秒 :
P5Y4M3DT2H1M1S
そして、その代替形式は、 ISO8601 は以下に示すとおりです。
P [ years-months-days ] [ T hours:minutes:seconds ]
そしてそれはまた、 文字Pと文字T、 それを分割するのは 日付と時刻 間隔値の一部。
たとえば、 ISO 8601 代替形式 のために書くことができます 5年4ヶ月3日2時間1分1秒、 以下に示すように:
P0005-04-03T02:01:01
PostgreSQL 間隔の出力形式
PostgreSQL の間隔値の出力形式は、 セット インターバルスタイル 以下の例でわかるように、コマンドを使用します。
SET intervalstyle = 'iso_8601';
PostgreSQL には、次の 4 つの異なる出力形式が含まれています。
注: 間隔値をフォーマットするために、PostgreSQL はデフォルトで Postgres スタイルを使用します。
理解を深めるための例を見てみましょう。
以下のコマンドは、 5年4ヶ月3日2時間1分1秒 4 つの異なる出力形式:
ISO_8601 出力形式の場合
以下のコマンドでは、 セット の インターバルスタイル として iso_8601 上記の間隔値の場合:
SET intervalstyle = 'iso_8601'; SELECT INTERVAL '5 years 4 months 3 days 2 hours 1 minute 1 second';
出力
上記のコマンドを実行すると、以下の結果が得られます。 iso_8601 間隔出力形式:
postgres_verbose 出力形式の場合
以下のコマンドでは、 セット の インターバルスタイル として postgres_verbose 上記の間隔値の場合:
SET intervalstyle = 'postgres_verbose'; SELECT INTERVAL '5 years 4 months 3 days 2 hours 1 minutes 1 second';
出力
上記のコマンドを実装すると、以下の結果が得られます。 postgres_verbose 間隔出力形式:
Javaの文字から整数へ
Postgres 出力形式の場合
以下のコマンドでは、 セット の インターバルスタイル として ポストグレ 上記の間隔値の場合:
SET intervalstyle = 'postgres'; SELECT INTERVAL '5 years 4 months 3 days 2 hours 1 minutes 1 second';
出力
上記のコマンドが正常に実行されると、以下の結果が得られます。 ポストグレ 間隔出力形式:
Sql_standard 出力形式の場合
以下のコマンドでは、 セット の インターバルスタイル として sql_standard 上記の間隔値の場合:
SET intervalstyle = 'sql_standard'; SELECT INTERVAL '5 years 4 months 3 days 2 hours 1 minutes 1 second';
出力
上記のコマンドが正常に実行されると、以下の結果が得られます。これは、 sql_standard 間隔出力形式:
PostgreSQL 間隔を文字列に変更する
使用できます TO_CHAR() 間隔値を文字列に変更する関数。
PostgreSQL の間隔を文字列に変更するための構文
TO_CHAR(interval,format)
の TO_CHAR() 関数 かかります 最初の声明 として 間隔値 そしてもう一つは フォーマット 文字列を取得し、特定の形式で間隔を表示します。
以下の例では、PostgreSQL 間隔を文字列値に変換する TO_CHAR() 関数を使用します。
SELECT TO_CHAR( INTERVAL '15h 15m 15s','HH24:MI:SS' );
出力
上記のコマンドが正常に実行されると、次の結果が得られます。
PostgreSQL の間隔関連の演算子と関数
間隔演算子
以下を使用できます +、-、* などの算術演算子 間隔の値を取得します。
理解を深めるために、以下の例を見てみましょう。
次のコマンドでは、 算術演算子 (+) PostgreSQL の間隔データ型を使用すると、次のようになります。
SELECT INTERVAL '1h 50m' + INTERVAL '5m';
出力
上記のコマンドを実装すると、以下の結果が得られます。
次のコマンドでは、 算術演算子 (-) PostgreSQL の間隔データ型を使用すると、次のようになります。
SELECT INTERVAL '3h 50m' - INTERVAL '30m';
出力
上記のコマンドを実装すると、次の結果が得られます。
次のコマンドでは、 算術演算子 (*) PostgreSQL の間隔データ型を使用すると、次のようになります。
SELECT 400 * INTERVAL '5 minute';
出力
上記のコマンドを実装すると、次の結果が得られます。
PostgreSQL 間隔からのデータの抽出
使用できます 抽出する() 間隔値からフィールドを抽出する関数。たとえば、 年、月、日など 。
jリスト
PostgreSQL 間隔からデータを抽出するための構文
EXTRACT(field FROM interval)
上記の構文では、 年、月、日、時、分 、などをフィールドパラメータに含めます。
の 抽出する 間隔から抽出したい場合、関数は倍精度型の値を返します。
次の例では、 抽出する() 倍精度値を取得する関数。
SELECT EXTRACT (MINUTE FROM INTERVAL '2 hours 30 minutes' );
出力
上記のコマンドが正常に実行されると、以下の出力が表示されます。 倍精度の日付部分 以下に示す値:
PostgreSQL 間隔値の調整
2つの機能があります。 justify_days と justify_hours PostgreSQL では、 24時間間隔 として考える ある日 との間隔 30日間 として考える 一か月 。
PostgreSQL の間隔値をどのように調整するかを理解するための例を見てみましょう。
次のコマンドでは、 justify_days および justify_hours 関数:
SELECT justify_days(INTERVAL '30 days'), justify_hours(INTERVAL '24 hours');
出力
上記のコマンドを実行すると、次の結果が得られます。これには、間隔が表示されます。 30日を1ヶ月として そしてその 24時間を1日として :
それに加えて、 justify_interval 関数は、次の助けを借りて間隔値を調整します。 justify_days と justify_hours 符号の変更を追加すると、次のようになります。
次の例では、SELECT コマンドで justifiy_interval 関数を使用します。
SELECT justify_interval(interval '6 months -1 hour');
出力
上記のコマンドを実装すると、次の出力が得られます。
概要
の中に PostgreSQL 間隔データ型 セクションでは、次のトピックを学習しました。
- の PostgreSQL 間隔データ type はピリオドを格納して展開するために使用されます。 年、月、日、時間、分、秒。
- うちは違うものを使いました インターバル関数 、 例えば、 NOW()、TO_CHAR()、 特定のテーブルの間隔値を拡張します。
- PostgreSQL の間隔値には両方の値が含まれます。 入出力 間隔形式。
- PostgreSQL の間隔値は、次の助けを借りて調整できます。 justify_days()、justify_hours、justify_interval() 関数。
- 使用できます 抽出する() 間隔フィールドの値を抽出する関数。