【发布时间】: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命令的含义:
to_date('2013-03-01', 'yyyy-mm-dd') 和 trunc(sysdate, 'mm') 之间的日期 -1
“-1”是什么意思?
另一个例子是
trunc(months_between(date1, date2))+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
这是给出date1 和date2 之间的整月数,将一个月的任何小数部分视为整月。例如,如果你给它日期7/28/2013和7/29/2013它会报告一个月,如果你给它7/1/2013和7/31/2013,它也会报告一个月。
MONTHS_BETWEEN function 返回,正如它所暗示的,两个日期之间的月数。返回值将有小数位 - 例如,返回值 1.5 表示一个半月。
TRUNC 函数在应用于数字时会截去所有小数,因此TRUNC(1.9999999) 将返回1。
【讨论】:
+1 是在日期上添加一天的方式
-1 是删除日期的方式
在您的具体情况下:
指令trunc(sysdate, 'mm') -1 删除到日期的一个月,在这种情况下是当前日期的前一个月。
指令trunc(months_between(date1, date2))+1 计算两个日期之间的月份差,然后加一。
看看这个SQLFiddle
【讨论】:
这是一种增加或减少天数的懒惰方式
【讨论】: