<p>我想使用psycopg2在Python中运行PostgreSQL查询,它按<code>timestamp without timezone</code>类型的列进行过滤。我有一个很长的时间戳(而不是一个范围)的允许值列表,psycopg2可以方便地处理数组,因此我认为这应该是可行的:</p>
<pre><code>SELECT somestuff
FROM mytable
WHERE thetimestamp = ANY (%(times)s)
</code></pre>
<p><code>times</code>参数是<code>datetime</code>对象的列表。我也试过<code>psycopg2.Timestamp()</code>。它们都转换为<code>WHERE thetimestamp = ANY (ARRAY['2009-07-06T00:00:00', '2009-07-07T00:00:00', ...])</code>,不幸的是,由于以下错误而失败:</p>
^{pr2}$
<p>我在pgAdmin中也证实了这一点,所以不仅仅是psycopg2。现在看来,Postgres不会隐式地将字符串数组转换为时间戳数组。如果我显式地将<code>::timestamp</code>添加到pgAdmin中的每个元素,它将很好地转换一个字符串,数组也能正常工作,但我不知道如何在psycopg2中这样做。在</p>
<p>除了忘记DB-API参数和手动构建长时间戳字符串之外,最好的方法是什么?我有什么办法可以把它转换成正确的类型吗?在</p>