我已经简化了一个请求的SQL报告。其中一个参数是允许他们输入他们希望数据/行返回多少天,例如。他们输入10天,但如果他们什么都不输入,目前它会获取过去90天的所有内容。
他回来询问是否有一种方法可以在没有提供值的情况下获取所有数据(目前它只获取最近90天的数据)
我只试过nvl到目前为止-
Select *
From timesheets
Where transaction_date between trunc(sysdate-nvl('&Days','90')) and trunc(sysdate)
2条答案
按热度按时间oxcyiej71#
像这样吗
示例(SQL * Plus,使用替换变量):
2q5ifsrm2#
您可以用途:
或:
transaction_date <= TRUNC(SYSDATE)
,那么你会得到今天午夜之前或等于午夜的所有数据,并排除今天午夜之后1秒的所有行。如果你使用transaction_date < TRUNC(SYSDATE) + 1
,那么你得到的是今天任何时间之前或等于今天任何时间的所有值。如果你的DATE
列只包含有午夜时间成分的值,那么两者的行为都是一样的,但是如果你有非午夜时间成分,那么你需要检查你想要实现的业务逻辑(可能是今天的任何时候,而不仅仅是午夜)。