Oracle - LAST_DAY 和 TRUNC - 执行顺序
Oracle - LAST_DAY and TRUNC - order of execution
我在使用 LAST_DAY
和 TRUNC
的组合时得到了意想不到的结果:
select LAST_DAY(TRUNC(sysdate, 'DAY')) from dual;
--31-JUL-2021 00:00:00
select TRUNC(LAST_DAY(sysdate), 'DAY')from dual;
--26-JUL-2021 00:00:00
为什么这些调用没有 return 相同的结果?我的意思是,有什么区别:
- 我希望今天被截断(去掉小时数)
- 然后获取该月的最后一天
和
- 我想要这个月的最后一天(带小时)
- 然后去掉小时部分
TRUNC(datestamp, 'DAY')
获取包含 datestamp
的一周的第一天。奇怪但真实。
如果您想要日期戳的日期,只需使用 TRUNC(datestamp)
。
Oracle 日期戳是底层的浮点数。
我在使用 LAST_DAY
和 TRUNC
的组合时得到了意想不到的结果:
select LAST_DAY(TRUNC(sysdate, 'DAY')) from dual;
--31-JUL-2021 00:00:00
select TRUNC(LAST_DAY(sysdate), 'DAY')from dual;
--26-JUL-2021 00:00:00
为什么这些调用没有 return 相同的结果?我的意思是,有什么区别:
- 我希望今天被截断(去掉小时数)
- 然后获取该月的最后一天
和
- 我想要这个月的最后一天(带小时)
- 然后去掉小时部分
TRUNC(datestamp, 'DAY')
获取包含 datestamp
的一周的第一天。奇怪但真实。
如果您想要日期戳的日期,只需使用 TRUNC(datestamp)
。
Oracle 日期戳是底层的浮点数。