在postgres中是否有任何等效函数,如oracle的systimestamp()

时间:2016-08-03 12:21:07

标签: postgresql migration systimestamp

我正在使用oracle来进行postgresql数据库迁移项目。我需要从postgres读取操作系统的日期和时间。在oracle中,sysdate()以日期类型数据返回系统日期时间,systimestamp()返回时间戳类型数据,无论time_zone变量集如何。但是在postgres中,current_date()和current_timestamp()总是相对于为该数据库设置的时区变量给出结果。 同步时区变量(即设置时区=' utc')是一种方式,但我不希望我的时区变量被更改。

我想要得到的是我的系统的当前日期和时间(时区可能包括或不包括),就像在oracle中一样。任何pl / pgsql都会有所帮助。谢谢

1 个答案:

答案 0 :(得分:0)

Oracle和PostgreSQL中的数据类型TIMESTAMP WITH TIME ZONE不同 当Oracle将时间戳信息与时间戳一起存储时,PostgreSQL以UTC格式存储时间戳并将其显示在当前设置的时区(可用SQL语句SHOW TimeZone)。

因此函数在PostgreSQL和Oracle中同时返回,但它以不同的方式显示。这应该没问题。

如果您确实需要存储时区信息以及时间戳,则必须使用单独的字段来存储时区信息。然后,您可以使用AT TIME ZONE将时间戳转换为该时区进行显示。