2016-05-16 55 views
0

我有一个包含出生日期列的CSV文件。我使用Adobe Campaign工具(以前称为neolane)导入我的PostgreSQL数据库。为旧日期更改日期值 - 导入CSV

在我的工具,我提供的出生日期字段的数据类型为MM/DD/YYYY HH:mm:ss的

日期像1942年9月20日12:00:00 AM和更新时,存储到数据库正在正确保存,例如1942-09-20 00:00:00 + 06:30。不知道如何计算第二部分。如果你可以对此发表评论。

然后较旧的值(所有年龄大于1941),如1941年10月1日12:00:00 AM被存储在数据库中作为1941年9月30日23:23:20 + 05:53: 20这是在出生日期栏中提到的日龄。

不确定这是否与PostgreSQL或产品有关。

+0

“+”后面的部分是时区偏移量。 –

+0

谢谢安德鲁。我不理解的一点是,为什么数据库为某些值选择+6:30,其他值为+5:30。 正如您所见,源CSV中没有提及时区 – Vipul

+0

它可能是您用来导入数据的工具不符合您的期望。时区偏移量为+05:53:20的可能性不大。检查文档。 –

回答

1

首先,你说你正在尝试导入日期,但明确导入时间戳。日期没有小时,分钟或秒钟。

当你想要一个日期时不要使用时间戳。其次,您没有为这些值提供时区,而是将它们存储为“带时区的时间戳”。

我不确定你的当地时区是什么,但如果我们尝试加尔各答,那么它看起来像我们得到类似的结果。随着时间的推移,时区偏移会变得有点奇怪。在很多地方,直到主要的火车旅行和电报到达时,标准化时区非常紧迫。这可能需要很长时间取决于当地政治。

所以 - 如果你可以这样做,使用日期。

如果不是,请指定保存数据时的意思时区,也不要使用午夜,使用10AM或中午或类似的时间。否则,时区更改将(正确)影响显示的日期。

有一个日期和时间处理in the manuals的讨论。那里提到了"Olson" timezone history database,并提供了一些有趣的阅读。