teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

加筆

2021/12/16 06:37

投稿

退会済みユーザー
answer CHANGED
@@ -31,4 +31,9 @@
31
31
  > show timezone;
32
32
 
33
33
  というクエリーを実行します。おそらくこれがUTCなどになっているために、
34
- CURRENT_TIMESTAMP が日本時間とずれているのだと思われます。
34
+ CURRENT_TIMESTAMP が日本時間とずれているのだと思われます。
35
+ 参考:
36
+ [PostgreSQL タイムゾーンを確認する | mebee](https://mebee.info/2021/07/15/post-38845/)
37
+
38
+ タイムゾーンを設定するには下記の記事も参考にしてください:
39
+ [PostgreSQL - タイムゾーンをDBに設定する - Qiita](https://qiita.com/zkangaroo/items/93be2d4504c3d1d5f185)

3

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

2021/12/16 06:37

投稿

退会済みユーザー
answer CHANGED
@@ -23,4 +23,12 @@
23
23
 
24
24
  定義しておくとか、接続中にて
25
25
  SET TIME ZONE 'Asia/Tokyo';
26
- しておけば良いかと。
26
+ しておけば良いかと。
27
+
28
+ 【加筆】
29
+ 接続中のデータベースのタイムゾーンがどうなっているかを調べるには
30
+
31
+ > show timezone;
32
+
33
+ というクエリーを実行します。おそらくこれがUTCなどになっているために、
34
+ CURRENT_TIMESTAMP が日本時間とずれているのだと思われます。

2

タイムゾーンの話を加筆

2021/12/16 06:35

投稿

退会済みユーザー
answer CHANGED
@@ -10,4 +10,17 @@
10
10
  TIMESTAMP WITH TIMEZONE型を使えばタイムゾーンを伴った日時の管理ができるのですが、
11
11
  定義を見直してみてはいかがでしょうか。
12
12
  タイムゾーンの影響を手計算することから解放されて楽になると思います。
13
- そして、デフォルト値としてCURRENT_TIMESTAMPが入るようなカラムの定義だとさらに省略できて良いでしょうね。
13
+ そして、デフォルト値としてCURRENT_TIMESTAMPが入るようなカラムの定義だとさらに省略できて良いでしょうね。
14
+
15
+ [19.11.2. ロケールと書式設定](https://www.postgresql.jp/document/12/html/runtime-config-client.html#GUC-TIMEZONE)や
16
+ [8.5.3. 時間帯](https://www.postgresql.jp/document/12/html/datatype-datetime.html#DATATYPE-TIMEZONES)のあたりを読んでほしいのですが、
17
+ デフォルトで扱うタイムゾーンを与えておくことの他に、
18
+ 現在の接続の中でタイムゾーンを一時的に変更することもできたりしますので、
19
+ 常に日本時間を基本とするのであれば
20
+ postgresql.conf で
21
+
22
+ > timezone = 'Asia/Tokyo'
23
+
24
+ 定義しておくとか、接続中にて
25
+ SET TIME ZONE 'Asia/Tokyo';
26
+ しておけば良いかと。

1

見直し

2021/12/16 02:24

投稿

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