You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle Text中Timestamp字段Facet Search查询的格式问题

解决Oracle Text SDATA查询TIMESTAMP字段的格式问题

针对你遇到的DRG-12246错误,核心原因是SDATA条件中传入的字符串格式与TIMESTAMP类型的SDATA段不兼容。Oracle Text对TIMESTAMP类型的SDATA字段,要求使用明确的TIMESTAMP类型值,而非纯数字格式的字符串。

正确的两种写法:

  1. 使用TO_TIMESTAMP函数转换字符串为TIMESTAMP类型
SELECT * FROM TEST_USER_FT 
WHERE CONTAINS(ID,'SDATA(DATE_BIRTH > TO_TIMESTAMP(''2010-01-31 02:00:00'', ''YYYY-MM-DD HH24:MI:SS''))') > 0;

如果你的TIMESTAMP字段包含小数秒,需要在格式中加入.FF(比如.FF3表示三位小数秒):

SELECT * FROM TEST_USER_FT 
WHERE CONTAINS(ID,'SDATA(DATE_BIRTH > TO_TIMESTAMP(''2010-01-31 02:00:00.000'', ''YYYY-MM-DD HH24:MI:SS.FF3''))') > 0;
  1. 使用Oracle标准TIMESTAMP字面量语法
SELECT * FROM TEST_USER_FT 
WHERE CONTAINS(ID,'SDATA(DATE_BIRTH > TIMESTAMP ''2010-01-31 02:00:00'')') > 0;

若涉及带时区的TIMESTAMP字段(TIMESTAMP WITH TIME ZONE),则使用带时区的字面量:

SELECT * FROM TEST_USER_FT 
WHERE CONTAINS(ID,'SDATA(DATE_BIRTH > TIMESTAMP ''2010-01-31 02:00:00 +00:00'')') > 0;

关键说明:

你之前使用的YYYYMMDDHH24MISS格式仅适用于DATE类型字段的SDATA查询,对于TIMESTAMP类型,必须确保传入的是TIMESTAMP类型的表达式,而非纯数字字符串,这样Oracle Text才能正确匹配SDATA段的类型,避免类型不兼容的错误。

内容的提问来源于stack exchange,提问作者Domenico

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 16:32:46