1

我找不到以下 SQL 命令的含义:

其中 to_date('2013-03-01', 'yyyy-mm-dd') 和 trunc(sysdate, 'mm') -1之间的日期

-1 ”是什么意思/是什么?

另一个例子是

截断(months_between(日期1,日期2))+1

我已经搜索过这个,但找不到任何东西。

谢谢你的建议!

4

3 回答 3

2

+1是在日期中添加一天的方法

-1是删除日期的方法

在您的具体情况下:

指令trunc(sysdate, 'mm') -1删除一个月到日期,在这种情况下是当前日期前一个月。

该指令trunc(months_between(date1, date2))+1计算两个日期之间的月份差,然后加一。

看看这个SQLFiddle

于 2013-07-30T14:53:28.937 回答
2

正如其他人回答的那样,“日期 - 1”从日期中减去一天。以下是有关您的特定 SQL 片段的更多详细信息:

where date between to_date('2013-03-01', 'yyyy-mm-dd') and trunc(sysdate, 'mm') -1`

这将评估为“2013 年 3 月 1 日至上月底之间的日期”

  • TRUNC(某个日期'MM')将日期截到月初
  • TRUNC(SYSDATE, 'MM')返回当月的月初
  • TRUNC(SYSDATE, 'MM')-1返回上个月的最后一天

trunc(months_between(date1, date2))+1

这是给出 和 之间的完整月数date1date2将一个月的任何部分视为一个完整月。例如,如果你给它日期7/28/20137/29/2013它会报告一个月,如果你给它,它也会报告一个月,7/1/2013并且7/31/2013

正如它所暗示的那样,该MONTHS_BETWEEN函数返回两个日期之间的月数。返回值将有小数位 - 例如,返回值 1.5 表示一个半月。

TRUNC函数在应用于数字时,将删除其所有小数,因此TRUNC(1.9999999)将返回1

于 2013-07-30T15:03:11.537 回答
1

这是增加或减少天数的一种懒惰方式

于 2013-07-30T14:53:19.440 回答