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

Oracle中基于TIMESTAMP字段查询15天前数据的异常问题

问题分析

你的SQL条件create_datetime <= create_datetime - 15逻辑完全错误:你是拿每条记录的create_datetime和它自身减去15(数据库默认按天处理该数值)做比较,显然任何非NULL的时间值减去15天后都会小于原时间,这个条件永远不成立,自然查不到数据。

你实际要实现的应该是「查询create_datetime早于当前时间15天前的记录」,这是这类需求的常规场景。

正确SQL写法

根据不同数据库,写法略有差异:

  • MySQL/MariaDB:
    SELECT create_datetime 
    FROM xy
    WHERE create_datetime <= DATE_SUB(NOW(), INTERVAL 15 DAY);
    
    或简化写法:
    SELECT create_datetime 
    FROM xy
    WHERE create_datetime <= NOW() - INTERVAL 15 DAY;
    
  • PostgreSQL:
    SELECT create_datetime 
    FROM xy
    WHERE create_datetime <= CURRENT_TIMESTAMP - INTERVAL '15 days';
    
  • Oracle:
    SELECT create_datetime 
    FROM xy
    WHERE create_datetime <= SYSDATE - 15;
    
补充说明

如果你的需求确实是「查询每条记录的create_datetime早于它自身时间15天前」,这个条件本身就矛盾——一个时间不可能早于自己减去15天的时间,所以永远不会有符合条件的记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 15:39:52