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

質問編集履歴

1

dbへの保存時の処理等の説明を修正しました

2025/03/31 01:35

投稿

dev_670
dev_670

スコア25

title CHANGED
File without changes
body CHANGED
@@ -8,11 +8,11 @@
8
8
  ### 発生している問題・分からないこと
9
9
  たとえば、registration_dateというDATE型のカラムをprismaのスキーマで定義します。
10
10
 
11
- フロントエンドから渡ってくる値が、「2024-03-31」である場合、dbにそのままの形式で保存しようとするとエラーになるため、下記のように一旦Dateオブジェクトを作成して値を保存しています。しかし、実際にDBに保存されたデータを見たところ「YYYY-MM-DD」形式で保存されていました。
11
+ フロントエンドから渡ってくる値が、「2024-03-31」である場合、dbにそのままの形式で保存しようとするとエラーになるため、下記のように一旦、JSTをUTCに変換したDateオブジェクトを作成して値を保存しています。しかし、実際にDBに保存されたデータを見たところ「YYYY-MM-DD」形式で保存されおり、前日の日付が保存されていました。
12
12
 
13
- 一方、同カラムをprismaから取得すると2024-03-31T00:00:00.000Z といった形でYYYY-MM-DD形式ではなく、日付の後ろに日時データが付与されて取得されます。
13
+ 一方、同カラムをprismaから取得すると2024-03-30T00:00:00.000Z といった形でYYYY-MM-DD形式ではなく、日付の後ろに自動で「T00:00:00.000Z」という日時データが付与されて取得されます。こちらもDBに保存された通り、前日の日付で取得されます。
14
14
 
15
- フロントから送られてくる値はjstなので、prismaで保存する値もjstをutcに変換した日時で保存する必要があると思いますが、date型で定義すると日時はカットされて保存されているようです。date型を使って、こうした齟齬が起きないようにするために何か良い方法はありますでしょうか。よく使われている手法などもあれば教えていただきたいです。よろしくお願いいたします。
15
+ フロントから送られてくる値はjstなので、prismaで保存する値もjstをutcに変換した日時で保存する必要があると思いますが、date型で定義すると日時はカットされて保存されているようです。この状態ですと、utcをjstに変換することができません。date型を使って、こうした齟齬が起きないようにするために何か良い方法はありますでしょうか。よく使われている手法などもあれば教えていただきたいです。よろしくお願いいたします。
16
16
 
17
17
 
18
18
 
@@ -25,7 +25,7 @@
25
25
 
26
26
  ```
27
27
  // 保存時
28
- const registrationDate = new Date(input.registration_date) :
28
+ const registrationDate = new Date(input.registration_date + "T00:00:00+09:00");
29
29
  ```
30
30
 
31
31
  ### 試したこと・調べたこと