导致错误的原因 "Strings cannot be added or subtracted in dialect 3"

What causes error "Strings cannot be added or subtracted in dialect 3"

我有疑问:

WITH STAN_IND
AS (
SELECT ro.kod_stanow, ro.ind_wyrob||' - '||ro.LP_OPER INDEKS_OPERACJA, count(*) ILE_POWT
FROM M_REJ_OPERACJI ro
JOIN M_TABST st ON st.SYMBOL = ro.kod_stanow
WHERE (st.KOD_GRST starting with 'F' or (st.KOD_GRST starting with 'T')  )  AND ro.DATA_WYKON>'NOW'-100
GROUP BY 1,2)

SELECT S.kod_stanow, count(*) ILE_INDEKS, SUM(ILE_POWT-1) POWTORZEN
from STAN_IND S
GROUP BY S.kod_stanow
ORDER BY ILE_INDEKS

应该可以,但我收到错误消息:

SQL Error [335544606] [42000]: Dynamic SQL Error; expression evaluation not supported; Strings cannot be added or subtracted in dialect 3 [SQLState:42000, ISC error code:335544606]

我试图将其转换为更大的 varchar,但仍然没有成功。这里有什么问题?数据库是 Firebird 2.1

您的问题是'NOW'-100。文字 'NOW' 本身不是 date/timestamp,而是 CHAR(3) 文字。只有当与日期或时间戳列进行比较(或分配给)时,它才会被转换,这里减法发生在那个点之前。并且减法失败,因为未定义从字符串文字中减法。

使用 CAST('NOW' as TIMESTAMP) - 100CURRENT_TIMESTAMP - 100(如果列 DATA_WYKONDATE,则转换为 DATE 或使用 CURRENT_DATE)。