【发布时间】:2014-03-05 08:24:15
【问题描述】:
我正在尝试编写查询以生成自动报告。该报告将针对上个月的交易运行,它应该在每个月的 1 日运行。我有工作在每个月的第一天运行这份报告。但是我怎样才能让这个查询选择一个月中的天数? (有些月份有 30 天,有些月份有 31 天,并且在 2 月根据闰年没有天数变化)。 这里还有一个要求是我只需要在查询中传递一个参数。下面是我现在的查询示例
select id,name,address,trans_dt from tab1 where trans_dt between to_date('&1','MM-DD-YYYY')-30 AND to_date('&1','MM-DD-YYYY');
上面的查询是生成最近 30 天的交易,但是如果一个月的天数不是 31 或 28 就会出错。我使用 oracle 11r2 作为数据库。请帮忙写这个。
【问题讨论】:
-
您可以使用 last_day 函数获取特定月份的最后一天。 Select * from example_table where start_date is between to_date ('01-01-2014','dd-mm-yyyy') 和 last_day (你的日期) 从移动设备上写,所以请原谅我无法详细说明跨度>
-
那将不满足我的标准,因为我们希望在每个月的 1 日运行它,所以如果我使用这个函数,它将获得从 1 月 1 日到 2 月 28 日的记录,即 2 个月的数据。它不是每个月都查询一次它的运行情况。