Sql 获取表中记录之间的数据

Sql 获取表中记录之间的数据,sql,oracle,date-range,Sql,Oracle,Date Range,我有这样的数据: 例如,今天是2012年4月。参考上面的数据,我想用M_PER=03-2012获取数据,因为这个月在03-2012到06-2012的范围内 --编辑在这种情况下,我想获得已使用货币代码的汇率。因为今天仍然是4月,我想知道美元兑印尼盾的汇率,我必须用M\u PER=03-2012和CRR\u CURRENCY\u code=USD获取数据 问题是什么查询可以检索这样的数据?我使用rownum和orderby来获取值 从表中选择*,其中m_per>'04-2012'和ROWNUM=

我有这样的数据:

例如,今天是2012年4月。参考上面的数据,我想用
M_PER=03-2012
获取数据,因为这个月在
03-2012到06-2012
的范围内

--编辑
在这种情况下,我想获得已使用货币代码的汇率。因为今天仍然是4月,我想知道美元兑印尼盾的汇率,我必须用
M\u PER=03-2012
CRR\u CURRENCY\u code=USD
获取数据


问题是什么查询可以检索这样的数据?

我使用rownum和orderby来获取值

从表中选择*,其中m_per>'04-2012'和ROWNUM=1 ORDER BY month\u period ASC

我使用ROWNUM和ORDER BY获取值

SELECT*从表中选择,其中m_per>'04-2012'和ROWNUM=1 ORDER BY month\u period ASC

由于您似乎使用的是季度值,因此我将使用TRUNC函数和
'Q'
格式模型。这会将日期截断为1/1/YYYY、1/4/YYYY、1/7/YYYY和1/10/YYYY,即季度的第一天

为了适合您的模型,即季度末的月份,您需要添加两个月。这假定
MONTH\u PERIOD
列是SQL日期,而不是其他数据类型

下面是一个使用SYSDATE作为输入日期的示例

select *
from your_table
where add_months(trunc(sysdate, 'Q'),2) = month_period;

由于您似乎使用的是季度值,因此我会将TRUNC函数与
'Q'
格式模型一起使用。这会将日期截断为1/1/YYYY、1/4/YYYY、1/7/YYYY和1/10/YYYY,即季度的第一天

为了适合您的模型,即季度末的月份,您需要添加两个月。这假定
MONTH\u PERIOD
列是SQL日期,而不是其他数据类型

下面是一个使用SYSDATE作为输入日期的示例

select *
from your_table
where add_months(trunc(sysdate, 'Q'),2) = month_period;

您使用的是哪种数据库管理系统?PostgreSQL?神谕DB2?@a_horse_,没有名字,我在用Oracle。你在用哪个数据库管理系统?PostgreSQL?神谕DB2?@a_horse_,没有名字,我正在使用Oracle,。