2012-11-27 287 views
0

我试图通过API执行包含日期的查询。日期应为ISO_8601日期格式(yyyy-MM-dd'T'HH:mm:ssZ)查询时间戳Postgresql

例如,在我的表中的元组的人可以将日期:

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 

我的代码执行曲eries通过API是用python编写的。我不确定这个例外是什么意思?是不是可以查询带有String的时间戳?

+0

你能发布一些实际的代码吗? :) – Talvalin

回答

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