如何在Postgresql的时间戳中添加文化不变信息?

时间:2016-06-30 05:56:00

标签: sql postgresql timestamp insert-query

如何在Postgresql数据库中添加时间戳时添加文化不变信息?

创建表格查询:

CREATE TABLE Table1(Id SERIAL NOT NULL PRIMARY KEY,CreatedDate TIMESTAMP);

插入查询

insert into Table1 (CreatedDate)
   values (convert(TIMESTAMP,'18-06-12 10:34:09 PM',112));

我在postgresql数据库中执行查询时遇到错误。

column "timestamp" does not exist

这是将时间戳插入列的正确方法吗?

2 个答案:

答案 0 :(得分:3)

我认为你正在考虑这个问题。您不会将文化不变信息添加到时间戳。您可以使用它格式化时间戳(请参阅to_char),或者使用它来解析时间戳(请参阅datestyle配置选项)。

要插入时间戳,只需插入它,然后适当设置日期风格,然后将其转换为时间戳。所以,如果这总是美国,那么:

但在你的情况下,我认为你的例子中出现了错误,因为:

SELECT '18-06-12 10:34:09 PM'::timestamp;

有效,因为2018年是有效年份,但如果我先SET DATESTYLE = 'US';,那么我会收到错误,因为18不是有效月份。

答案 1 :(得分:1)

正如我发现的那样,你必须使用ADD TIME ZONE之类的

(to_timestamp('18-06-12 10:34:09 PM', 'yy-MM-dd') AT TIME ZONE 'America/Los_Angeles')

P.S。 America/Los_Angeles这只是一个例子