在 Oracle 11g 中,TRUNC(sysdate)
是一个日期截断函数,作用是去除当前系统时间的时间部分,只保留日期部分,将时间统一截断到当天的**00:00:00(午夜12点)**。
例如:
- 如果当前系统时间是
2025-09-19 15:30:45
,那么TRUNC(sysdate)
的结果是2025-09-19 00:00:00
。 - 即使当前时间是
2025-09-19 23:59:59
,TRUNC(sysdate)
仍然返回2025-09-19 00:00:00
。
常见用法:
-
筛选当天数据:
-- 查询今天0点到明天0点之间的数据 WHERE 时间字段 >= TRUNC(sysdate) AND 时间字段 < TRUNC(sysdate) + 1 -- +1 表示加1天(即次日0点)
-
计算其他时间点: 结合数值运算可灵活得到特定时间,例如:
TRUNC(sysdate) + 1
→ 明天0点TRUNC(sysdate) + 8/24
→ 今天8点(8小时/24小时)TRUNC(sysdate) - 1
→ 昨天0点
-
截断到更高时间单位(需指定格式):
TRUNC(sysdate, 'MM')
→ 当月1日0点(如2025-09-01 00:00:00
)TRUNC(sysdate, 'YYYY')
→ 当年1月1日0点(如2025-01-01 00:00:00
)
这个函数在处理日期范围查询时非常实用,能简化时间条件的编写。