回答編集履歴

1

加筆

2021/06/08 07:54

投稿

退会済みユーザー
test CHANGED
@@ -11,3 +11,43 @@
11
11
 
12
12
 
13
13
  timestamp(0)で使えばいいと思う。
14
+
15
+
16
+
17
+ ---
18
+
19
+
20
+
21
+ CURRENT_TIMESTAMPについても触れておくと、
22
+
23
+ PostgreSQLでは現在タイムスタンプの取得にいくつかやり方があって、
24
+
25
+ 場合によって使い分けなきゃいけない。
26
+
27
+
28
+
29
+ [9.9.4. 現在の日付/時刻](https://www.postgresql.jp/document/12/html/functions-datetime.html#FUNCTIONS-DATETIME-CURRENT)
30
+
31
+
32
+
33
+ > transaction_timestamp()
34
+
35
+ > statement_timestamp()
36
+
37
+ > clock_timestamp()
38
+
39
+ > timeofday()
40
+
41
+ > now()
42
+
43
+
44
+
45
+ > transaction_timestamp()はCURRENT_TIMESTAMPと等価ですが、明確に何を返すかを反映する名前になっています。 statement_timestamp()は現在の文の実行開始時刻を返すものです(より具体的にいうと、直前のコマンドメッセージをクライアントから受け取った時刻です)。
46
+
47
+ > statement_timestamp()およびtransaction_timestamp()はトランザクションの最初のコマンドでは同じ値を返しますが、その後に引き続くコマンドでは異なる可能性があります。
48
+
49
+ > clock_timestamp()は実際の現在時刻を返しますので、その値は単一のSQLコマンドであっても異なります。
50
+
51
+ > timeofday()はPostgreSQLの歴史的な関数です。 clock_timestamp()同様、実際の現在時刻を返しますが、timestamp with time zone型の値ではなく、整形されたtext文字列を返します。
52
+
53
+ > now()はtransaction_timestamp()と同じもので、伝統的なPostgreSQL関数です。