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

Oracle数据库查询两日期区间数据的SQL语句修正求助

解决Oracle VARCHAR2类型日期区间查询的格式错误问题

你的SQL报错主要有两个原因:

  • 格式字符串中的T是固定分隔字符,Oracle要求用双引号包裹,否则会被当作格式符号解析,导致"date format not recognized"错误
  • TO_DATE函数不支持毫秒(SSS)解析,Oracle的DATE类型仅精确到秒级,毫秒部分会被忽略

以下是两种修正方案:

方案1:忽略毫秒,用TO_DATE查询

将格式串里的T用双引号括起来,若不需要毫秒精度,可直接去掉SSS部分:

select * from MY_TABLE
where to_date(created_time, 'yyyy-MM-dd"T"HH:mm:ss') 
between to_date('2022-07-03T10:15:06', 'yyyy-MM-dd"T"HH:mm:ss') 
and to_date('2022-07-03T10:15:06', 'yyyy-MM-dd"T"HH:mm:ss');

如果保留原字符串的毫秒部分,TO_DATE会自动忽略,不影响秒级的区间比较。

方案2:保留毫秒精度,用TO_TIMESTAMP查询

若需要精确到毫秒的区间对比,改用TO_TIMESTAMP函数,同时用FF3匹配三位毫秒格式:

select * from MY_TABLE
where to_timestamp(created_time, 'yyyy-MM-dd"T"HH:mm:ss.FF3') 
between to_timestamp('2022-07-03T10:15:06.091', 'yyyy-MM-dd"T"HH:mm:ss.FF3') 
and to_timestamp('2022-07-03T10:15:06.091', 'yyyy-MM-dd"T"HH:mm:ss.FF3');

额外建议:如果业务允许,建议将created_time字段修改为TIMESTAMP或DATE类型,避免字符串转日期带来的性能损耗和格式兼容问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 08:00:56