100日でPostgreSQLをマスター(20日目)~日付時刻の関数~

PostgreSQL
※アフィリエイト広告を利用しています

 

Yukiです。

今日は日付と時刻の関数について勉強します。

Photo by Mylon Ollila on Unsplash

広告

日付・時刻の取得

日付・時刻の取得関数には、3種類あります。

トランザクション開始時を取得するもの。

SQL開始時。

関数実行時。

これら3つです。

トランザクション開始時

以下はトランザクション開始時を取得します。後の2つのタイプの方が少数派なので、そちらで覚えておけばよさそうです。

  • now()
  • current_timestamp
  • current_date
  • current_time
  • localtimestamp
  • localtime

now()はPostgreSQLの伝統的な関数だそうです。

current~とlocal~の違いは、current~が時間帯(タイムゾーン)を伴うのに対し、local~は時間帯(タイムゾーン)をともないません。

あと、current_dateはあるけど、localdateはないんですね。

SQL開始時

  • statement_timestamp() タイムスタンプ

SQL開始時のタイムスタンプです。

SQL内で何度呼んでも、同じ日時になります。

関数実行時

  • clock_timestamp()

関数実行時のタイムスタンプです。

同じSQL内でも呼び出しごとに時刻が変わります。

定義した関数内で使うと、毎回違う時刻が取れたりするのでしょうか。

差の計算

  • age(<終了日時>, <開始日時>)

2つのタイムスタンプの差を求める関数です。

ageというネーミングが面白いですね。

2つの引数は左から右を引く形になっています。

部分の取得

  • extract(<フィールド> from <タイムスタンプ>)
  • date_part(<フィールド>, <タイムスタンプ>)

年、月、日、時、分、秒など、日時から一部のフィールドだけ取り出します。

extractの方が標準SQLで、どちらも同じ機能です。

変換

日時、文字列、数値を互いに変換するための関数です。

Oracleとあまり変わらないですね。

  • to_char()
  • to_date(), to_timestamp()
  • to_number()

まとめ

今回は日付・時刻の関数や変換関数について学びました。

SQLを書くときに、けっこう活用することになりそうです。

 

参考

PostgreSQL 13.1 文書
第9章 関数と演算子
9.9. 日付/時刻関数と演算子
表9.32 日付/時刻関数演算子

 

<19日目 | 目次 | 21日目>

<<1日目から読む

コメント

タイトルとURLをコピーしました