【发布时间】:2016-11-16 01:11:34
【问题描述】:
SELECT
to_char(messages. TIME, 'YYYY/MM/DD') AS FullDate,
to_char(messages. TIME, 'MM/DD') AS PartialDate,
COUNT(CASE WHEN message_definitions.error_category = ? THEN 1 END) AS Errors,
error_categories.threshold,
COUNT(CASE WHEN messages.message_id = 14 THEN 1 END) AS Picks
FROM
messages LEFT JOIN
message_definitions USING (message_id) LEFT JOIN
error_categories USING (error_category)
WHERE
(messages. TIME > TIMESTAMP ? - '30 day'::INTERVAL) AND
(messages. TIME < TIMESTAMP '2016-08-03' + '1 day'::INTERVAL) AND
(messages.system_id = ?) AND
(messages.message_id = 14 OR
message_definitions.error_category = ?)
GROUP BY
FullDate, PartialDate, error_categories.threshold
ORDER BY
FullDate DESC LIMIT 40
在上述查询中,在 where 子句中,(第一行:(messages.TIME > TIMESTAMP ? - '30 day'::INTERVAL) AND ) 当参数被类型转换时(即当我把 TIMESTAMP 放在之前?)我得到以下错误
第二行中的文本数据不是这样(消息。TIME TIMESTAMP '2016-08-03' + '1 day'::INTERVAL)AND
当我将子句更改为 (messages.TIME > ? ::TIMESTAMP - '30 day'::INTERVAL) AND ) (即我把 TIMESTAMP 放在后面?) 任何人都可以对正在发生的事情有所了解吗?谢谢!!
注意: PostGresVersion - 9.6 OdBC 驱动程序 - 32 位驱动程序(位于 C:\Program Files (x86)\psqlODBC\0905\bin\psqlodbc30a.dll。) Postgres 8.4 也是如此。
【问题讨论】:
-
将参数绑定到上述查询的代码在哪里?您是否尝试逐字运行上述查询?
-
是的,目前我正在逐字运行查询。
标签: postgresql