【问题标题】:Restrict results to only dates that are in the next month将结果限制为仅在下个月的日期
【发布时间】:2019-10-09 15:47:24
【问题描述】:

我要编写的代码是“如果审核日期在下个月,请给我”。

Select id, review_date
from Table
Where (review date is in any part of the next month next month)?

我试过了:

where CAST("Revw_Dt" AS date) = ADD_MONTHS(Current_Date, 1) 

但这只会将下个月的审核日期返回到今天的日期。 如果它在下个月的任何地方,我需要它。

【问题讨论】:

  • 你使用的是什么数据库服务器?
  • 谢谢大家!为了快速响应!你们都是bomb.com!我发现我现在需要添加一个图层……“如果审核日期在下个月,请给我。”而且现在是 10 号或当月之后.... Yall 解决了 A 部分,你能在 B 部分给予一些爱吗?

标签: sql oracle date where-clause


【解决方案1】:

考虑以下方法,它将愉快地使用日期列上的现有索引:

SELECT id, review_date 
FROM mytable 
WHERE 
    review_date >= ADD_MONTH(TRUNC(SYSDATE, 'month'), 1)
    AND review_date < ADD_MONTH(TRUNC(SYSDATE, 'month'), 2)

【讨论】:

  • ADD_MONTHS 是一个 Oracle 函数,如果我没记错的话。
  • @TimBiegeleisen:是的,你是对的,我被CAST() 表达式愚弄了。我刚刚更新了查询。
【解决方案2】:

您需要结合使用add_monthstrunc 函数。

Select * from your_table
Where trunc(Revw_Dt, 'month') = trunc(add_months(current_date,1),'month');

干杯!!

【讨论】:

  • 您认为您可以在哪里提供 B 部分的帮助?并且它是当前月份的 >= 10 号
  • Your_date &gt;= trunc(current_date, 'month') + 10
【解决方案3】:

只需将审核日期的月份部分与下个月的日期进行比较:

SELECT *
FROM yourTable
WHERE EXTRACT(MONTH FROM Revw_Dt) = EXTRACT(MONTH FROM ADD_MONTHS(CURRENT_DATE, 1));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多