【问题标题】:SQL +/- number meaning?SQL +/- 数字是什么意思?
【发布时间】:2013-07-30 14:52:13
【问题描述】:

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

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

-1”是什么意思?

另一个例子是

trunc(months_between(date1, date2))+1

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

感谢您的建议!

【问题讨论】:

标签: sql oracle


【解决方案1】:

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

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,它也会报告一个月。

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

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

【讨论】:

    【解决方案2】:

    +1 是在日期上添加一天的方式

    -1 是删除日期的方式

    在您的具体情况下:

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

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

    看看这个SQLFiddle

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 避免重复造轮子不是偷懒。
      猜你喜欢
      • 2014-11-28
      • 2013-05-28
      • 1970-01-01
      • 2011-05-17
      • 2013-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多