Oracle SQL:为什么last_day(SYSDATE)需要to_date()?

时间:2014-09-09 15:21:31

标签: sql oracle

昨天,我将其中一个查询更改为在sysdate上进行数据透视。

在我的位置和加入中我最初使用last_day(SYSDATE);但是,这没有返回任何数据(这是在带有日期值的time_key列上进行过滤)。

当我将查询更改为to_date(last_day(SYSDATE))时,查询按原样返回数据。

我听说SYSDATE包含时间和日期(虽然,我没有看到这个 一个SELECT SYSDATE FROM DUAL;)。

有人可以详细说明我需要在to_date()上拨打last_day(SYSDATE)的原因吗?我不应该已经有了日期值吗?

1 个答案:

答案 0 :(得分:0)

这是一个很长的评论。

表达式last_day(sysdate)工作正常。 Here是一个SQL小提琴。

我的猜测是,您遇到的问题是时间组件已通过,您不想要时间。在这种情况下,只需使用trunc()。以下是等效的:

trunc(last_day(sysdate))
last_day(trunc(sysdate))