SQL +/-数字是什么意思?

时间:2013-07-30 14:52:14

标签: sql oracle

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

  

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

-1 ”的含义是什么?

另一个例子是

  

trunc(months_between(date1,date2)) +1

我搜索过这个,但找不到东西。

感谢您的建议!

3 个答案:

答案 0 :(得分:2)

+1是将日期添加到日期的方式

-1是将某一天移至日期的方法

在您的具体案例中:

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

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

看看这个SQLFiddle

答案 1 :(得分: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/20137/31/2013,它也会报告一个月。< / p>

MONTHS_BETWEEN function表示两个日期之间的月数。返回值将包含小数位 - 例如,返回值1.5表示一个半月。

TRUNC函数在对数字应用时会截断其所有小数,因此TRUNC(1.9999999)将返回1

答案 2 :(得分:1)

这是添加或减去日期的懒惰方式