1

我正在尝试通过 API 执行包含日期的查询。日期应采用 ISO_8601 日期格式(yyyy-MM-dd'T'HH:mm:ssZ)

例如,我表中的一个元组可能有日期:

2012-11-11T00:00:00+0000. 

在 unicode 中查询如下:

2012-11-11T00%3A00%3A00%2B0000

我自己检查日期是否有效,但我收到以下 SQL 异常:

SQL Exception: ERROR: operator does not exist: timestamp with time zone >= character varying

我通过 API 执行查询的代码是用 python 编写的。我不确定异常是什么意思?不能用字符串查询时间戳吗?

4

1 回答 1

2

要指定时间戳文字,请使用以下格式:

where ts_column >= timestamp '2012-11-11 T00:00:00+0000'

关键字timestamp对于定义时间戳文字很重要,否则它“仅”是一个字符值(这就是错误消息告诉您的内容)。该值必须符合 ISO 日期样式。

另一种选择是使用该to_timestamp功能:

where ts_column >= to_timestamp('2012-11-11 00:00:00', 'yyyy-mm-dd hh24:mi:ss');

这使您可以更好地控制文字的实际格式。

有关更多详细信息,请参阅手册:http ://www.postgresql.org/docs/current/static/functions-formatting.html#FUNCTIONS-FORMATTING-DATETIME-TABLE

于 2012-11-27T09:10:58.517 回答