PostgreSQLデータベースに日付と時刻を保存し、適切な形式でユーザに取得して表示します。PostgreSQLデータベースに日付と時刻を保存する最良の方法
アプリケーションユーザーがイランにあり、Jalali日時システムを使用するとします。今年の上半期のイランの時間はUTC + 04:30ですが、それ以外の年はUTC + 03:30です。実際には夏時間のがイランで使用されています。重要
:は時々、私たちは他のヨーロッパ諸国やイランからの決定と変更データベースサーバーの場所を作ります。
今、私はいくつかの質問を持っている:
時間で日付を保存する方が便利であるどのようなデータタイプ?
TIMESTAMP
(TIMESTAMP WITHOUT TIMEZONE
)またはTIMESTAMPZ
(TIMESTAMP WITH TIME ZONE
)?保存する方が便利なデータタイプ時間はです。
TIME
またはTIME WITH TIME ZONE
?保存する方が便利なデータタイプ日付のみ?
DATE
(グレゴリオ)String
(Jalali)またはカスタムデータ型ですか?データベースのTIMEZONEを1回設定するにはどうすればよいですか?私はデータベースのためにTIMEZONEを1回に設定したいと思います。その後、TIMESTAMPZ列のすべてのクエリが保存され、そのTIMEZONE内にフェッチされ、夏時間も考慮されますか?
現在の日付と時刻を保存するのに最適なSQLクエリは何ですか?
a-INSERT INTOテスト(d)VALUES(now());
b-INSERT INTOテスト(d)VALUES(now()at time zone 'utc');
c-INSERT INTOテスト(d)VALUES(now()at time zone 'Asia/Tehran');
d-INSERT INTOテスト(d)VALUES(current_timestamp);
e-INSERT INTOテスト(d)VALUES(now()at time zone 'utc');
f-INSERT INTOテスト(d)VALUES(now()at time zone 'Asia/Tehran');
番号5-cと5-fは、保存時に夏時間と見なされますか?
データベースに「アジア/テヘラン」のタイムゾーンがある場合、「アジア/テヘラン」に5-aと5-dが保存されていますか?
データベースからクエリを実行する場合、私の状況ではどのようなオプションが最適ですか?
a- SELECT d FROM test;
b- SELECT d at time zone 'utc' FROM test;
c- SELECT d時間帯 'Asia/Tehran' FROMテスト;
番号7-cは夏時間ですか?
数字7は「アジア/テヘラン」のタイムゾーンと夏時間のデータベースが「アジア/テヘラン」のタイムゾーンの場合ですか?
私は、日付/時間を節約するためにタイムスタンプを使用して、より良いたい場合、私はそれに夏時間を追加し、ジャラリ日付時刻に変換し、ユーザー、およびその逆にそれを示さなければなりません。タイムゾーン付きタイムスタンプのために
タイムゾーン付きのタイムスタンプは、常にUTCで保存されます。夏時間は関係ありません。 postgresはそれを出力時にフォーマットし、夏時間と全てをまとめます。だから、3つすべてのタイムスタンプを使い、適切なフォーマットを使って、日付、時刻のみを選択してください。 –
@ VaoTsunありがとう。だからTIMESTAMPZを選んだ場合、データベースから照会するときの夏時間も考慮されますか?これはすでに保存されているデータに影響しますか?第4の質問にもお答えください。 (今私は4番目の質問を追加します) –