假设你要操作的表名为 C_GEOREGION,日期时间字段为 UPDATEDATE(格式为 2025-11-24 11:07:36.000,Oracle 中通常对应 TIMESTAMP 或 DATE 类型)。
1. 查询今天内更新的数据
-- 方法1:使用 TRUNC 函数截取日期部分(忽略时间)
SELECT *
FROM C_GEOREGION
WHERE TRUNC(UPDATEDATE) = TRUNC(SYSDATE); -- SYSDATE 是当前系统日期
-- 方法2:使用 BETWEEN 明确指定时间范围(推荐,若字段有索引可提高效率)
SELECT *
FROM C_GEOREGION
WHERE UPDATEDATE BETWEEN TO_DATE(TO_CHAR(SYSDATE, 'YYYY-MM-DD') || ' 00:00:00', 'YYYY-MM-DD HH24:MI:SS')
AND TO_DATE(TO_CHAR(SYSDATE, 'YYYY-MM-DD') || ' 23:59:59', 'YYYY-MM-DD HH24:MI:SS');2. 查询一周前更新的数据
这里的“一周前”指 当前时间的7天前(精确到时分秒):
SELECT *
FROM C_GEOREGION
WHERE UPDATEDATE = TRUNC(SYSDATE) - 7;3. 查询今天8点到10点的数据
-- 拼接今天的日期和目标时间,转换为 DATE 类型进行比较
SELECT *
FROM C_GEOREGION
WHERE UPDATEDATE BETWEEN TO_DATE(TO_CHAR(SYSDATE, 'YYYY-MM-DD') || ' 08:00:00', 'YYYY-MM-DD HH24:MI:SS')
AND TO_DATE(TO_CHAR(SYSDATE, 'YYYY-MM-DD') || ' 10:00:00', 'YYYY-MM-DD HH24:MI:SS');4. 查询一个月前更新的数据
这里的“一个月前”指 当前日期的整一个月前(忽略时间,只对比日期):
SELECT *
FROM C_GEOREGION
WHERE TRUNC(UPDATEDATE) = ADD_MONTHS(TRUNC(SYSDATE), -1);说明
SYSDATE:Oracle 内置函数,返回当前系统的日期和时间(DATE类型,精确到秒)。TRUNC(date):截取日期的“日”部分,忽略时分秒(例如TRUNC(TO_DATE('2025-11-24 11:07:36', 'YYYY-MM-DD HH24:MI:SS'))结果为2025-11-24)。ADD_MONTHS(date, n):对日期进行月份加减(n为正数表示加月份,负数表示减月份)。TO_DATE(string, format):将字符串按指定格式转换为DATE类型(若UPDATEDATE是TIMESTAMP类型,Oracle 会自动兼容比较)。
如果 UPDATEDATE 是 VARCHAR2 类型(不推荐,但需兼容时),需先将其转换为 DATE 类型再比较,例如:
-- 若 UPDATEDATE 是 VARCHAR2 类型(格式:2025-11-24 11:07:36.000)
SELECT *
FROM C_GEOREGION
WHERE TO_DATE(SUBSTR(UPDATEDATE, 1, 19), 'YYYY-MM-DD HH24:MI:SS') BETWEEN ...;