0

生年月日列を含むCSVファイルがあります。Adobe Campaign ツール (以前は neolane と呼ばれていました) を使用して、PostgreSQL データベースにインポートしています。

私のツールでは、生年月日列のデータ型をmm/dd/yyyy hh:mm:ssに指定しました

1942 年 9 月 20 日12:00:00 AM以降のような日付は、データベースに保存されると正しく保存されます (例: 1942-09-20 00:00:00+06:30 ) 。秒の端数がどのように計算されているかわかりません。その上でコメントいただければ。

次に、10/1/1941 12:00:00 AMなどの古い値 (すべて 1941 年より古い)は、 1941-09-30 23:23:20+05:53:20としてデータベースに格納されています。生年月日欄に記載のある方。

これが PostgreSQL に関連する問題なのか、製品に関連する問題なのかは不明です。

4

1 に答える 1

1

まず、日付をインポートしようとしているが、明らかにタイムスタンプをインポートしていると言います。日付には時間、分、秒はありません。

日付が必要な場合は、タイムスタンプを使用しないでください。

次に、これらの値にタイムゾーンを提供していませんが、「タイムゾーン付きのタイムスタンプ」として保存しています。

あなたのローカル タイムゾーンが何なのかはわかりませんが、カルカッタを試してみると、同様の結果が得られるようです。タイムゾーンのオフセットは、時間をさかのぼるにつれて少しおかしくなる傾向があります。多くの場所では、タイムゾーンを標準化する緊急性が高まったのは、主要な鉄道旅行と電報の到来までではありませんでした. 地方の政治によっては、それには長い時間がかかる可能性があります。

したがって、可能であれば、日付を使用してください。

そうでない場合は、データを保存するときに意味するタイムゾーンを指定し、真夜中を使用せずに、午前 10 時または正午などを使用します。そうしないと、タイムゾーンの変更が (かなり正確に) 表示される日付に影響します。

マニュアルには、日付と時刻の処理に関する議論があります。「オルソン」タイムゾーン履歴データベースがそこに記載されており、興味深い読み物を提供しています。

于 2016-05-16T15:57:16.313 に答える