导致错误的原因 "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) - 100
或 CURRENT_TIMESTAMP - 100
(如果列 DATA_WYKON
是 DATE
,则转换为 DATE
或使用 CURRENT_DATE
)。
我有疑问:
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) - 100
或 CURRENT_TIMESTAMP - 100
(如果列 DATA_WYKON
是 DATE
,则转换为 DATE
或使用 CURRENT_DATE
)。