如何编写Oracle查询获取当前日期的毫秒级起止时间戳
Oracle 当日起止时间戳查询方案
基础查询语句(输出指定格式的两个时间戳)
SELECT TO_CHAR(TRUNC(SYSDATE), 'YYYY-MM-DD HH24:MI:SS.FF3') AS 当日起始时间戳, TO_CHAR(TRUNC(SYSDATE) + 86399/86400, 'YYYY-MM-DD HH24:MI:SS.FF3') AS 当日结束时间戳 FROM DUAL;
查询结果示例:
| 当日起始时间戳 | 当日结束时间戳 |
|---|---|
| 2024-05-20 00:00:00.000 | 2024-05-20 23:59:59.000 |
注意事项与优化建议
- 如果你的数据存在毫秒级的时间记录,建议将结束时间计算逻辑调整为
TRUNC(SYSDATE) + 1 - 1/86400/1000,输出格式为2024-05-20 23:59:59.999,避免漏掉当日最后一秒内的记录 - 更推荐的日期范围筛选写法不需要提前查询时间戳,性能更稳定,也不会出现时间精度遗漏问题:
SELECT * FROM 目标表 WHERE 时间字段 >= TRUNC(SYSDATE) AND 时间字段 < TRUNC(SYSDATE) + 1
该写法等价于
时间字段 between 当日0点 and 次日0点前,完全覆盖当日所有时段的记录,适配所有时间精度的字段类型。
内容的提问来源于stack exchange,提问作者user13632549
相关产品推荐
相关产品推荐

