我正在尝试通过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编写的。我不确定异常是什么意思?是否无法使用String查询时间戳?
答案 0 :(得分:1)
要指定时间戳文字,请使用以下格式:
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