回答編集履歴

4

加筆

2021/12/16 06:37

投稿

退会済みユーザー
test CHANGED
@@ -65,3 +65,13 @@
65
65
  というクエリーを実行します。おそらくこれがUTCなどになっているために、
66
66
 
67
67
  CURRENT_TIMESTAMP が日本時間とずれているのだと思われます。
68
+
69
+ 参考:
70
+
71
+ [PostgreSQL タイムゾーンを確認する | mebee](https://mebee.info/2021/07/15/post-38845/)
72
+
73
+
74
+
75
+ タイムゾーンを設定するには下記の記事も参考にしてください:
76
+
77
+ [PostgreSQL - タイムゾーンをDBに設定する - Qiita](https://qiita.com/zkangaroo/items/93be2d4504c3d1d5f185)

3

タイムゾーンの話をさらに加筆

2021/12/16 06:37

投稿

退会済みユーザー
test CHANGED
@@ -49,3 +49,19 @@
49
49
  SET TIME ZONE 'Asia/Tokyo';
50
50
 
51
51
  しておけば良いかと。
52
+
53
+
54
+
55
+ 【加筆】
56
+
57
+ 接続中のデータベースのタイムゾーンがどうなっているかを調べるには
58
+
59
+
60
+
61
+ > show timezone;
62
+
63
+
64
+
65
+ というクエリーを実行します。おそらくこれがUTCなどになっているために、
66
+
67
+ CURRENT_TIMESTAMP が日本時間とずれているのだと思われます。

2

タイムゾーンの話を加筆

2021/12/16 06:35

投稿

退会済みユーザー
test CHANGED
@@ -23,3 +23,29 @@
23
23
  タイムゾーンの影響を手計算することから解放されて楽になると思います。
24
24
 
25
25
  そして、デフォルト値としてCURRENT_TIMESTAMPが入るようなカラムの定義だとさらに省略できて良いでしょうね。
26
+
27
+
28
+
29
+ [19.11.2. ロケールと書式設定](https://www.postgresql.jp/document/12/html/runtime-config-client.html#GUC-TIMEZONE)や
30
+
31
+ [8.5.3. 時間帯](https://www.postgresql.jp/document/12/html/datatype-datetime.html#DATATYPE-TIMEZONES)のあたりを読んでほしいのですが、
32
+
33
+ デフォルトで扱うタイムゾーンを与えておくことの他に、
34
+
35
+ 現在の接続の中でタイムゾーンを一時的に変更することもできたりしますので、
36
+
37
+ 常に日本時間を基本とするのであれば
38
+
39
+ postgresql.conf で
40
+
41
+
42
+
43
+ > timezone = 'Asia/Tokyo'
44
+
45
+
46
+
47
+ 定義しておくとか、接続中にて
48
+
49
+ SET TIME ZONE 'Asia/Tokyo';
50
+
51
+ しておけば良いかと。

1

見直し

2021/12/16 02:24

投稿

退会済みユーザー
test CHANGED
@@ -1,4 +1,16 @@
1
1
  エラーになるのは"CURRENT_TIMESTAMP"という文字列を入力しようとしているからと捉えられているからでしょうね。
2
+
3
+
4
+
5
+ ```
6
+
7
+ const sql = "INSERT INTO sensor (id,time,place,cong) VALUES ($1, CURRENT_TIMESTAMP, $2, $3)"
8
+
9
+ const values = [5, 3, 15]
10
+
11
+ ```
12
+
13
+ ならどうでしょうか?
2
14
 
3
15
 
4
16
 
@@ -9,3 +21,5 @@
9
21
  定義を見直してみてはいかがでしょうか。
10
22
 
11
23
  タイムゾーンの影響を手計算することから解放されて楽になると思います。
24
+
25
+ そして、デフォルト値としてCURRENT_TIMESTAMPが入るようなカラムの定義だとさらに省略できて良いでしょうね。