在 oracle 中获取 'current date ' 和接下来的 5 天(未来日期)之间的记录

fetch records between 'current date ' and next 5 days(future date) in oracle

Select * from dual where between  to_date(date,'YYYY-MM-DD') = '2020-10-01'
                    and to_date(date,'YYYY-MM-DD') + 5

这是正确的查询方式吗?

日期的

1.format 是 varchar2 2.required 当前日期和接下来 5 天之间的数据 3.first 需要转换成日期格式。 4.接下来的5应该是当天+5

您可能打算写:

where to_date(mydate, 'yyyy-mm-dd') between trunc(sysdate) 
                                      and trunc(sysdate) + 5

理由:

  • date是保留字;我认为这不是您专栏的实际名称,所以我使用了其他名称;如果那是真实姓名,那么您需要用双引号将其括起来("date",或 "DATE",否则,取决于它最初是如何定义的)

  • mydate 是一个字符串,因此您需要将其转换为日期:为此,您可以使用 to_date()

  • 然后将它与当前日期进行比较,不包括时间部分:trunc(sysdate),以及 5 天后的相同日期

但是请注意,这将更有效地表达如下:

where mydate between to_char(trunc(sysdate), 'yyyy-mm-dd') 
               and to_char(trunc(sysdate + 5), 'yyyy-mm-dd')

这避免了字符串列上的日期转换,而是转换了区间范围。在这里,字符串比较是可能的,因为您正在存储的字符串的格式允许它(它被存储为 dd-mm-yyyy' 例如,这是不可能的)。

不过,我强烈建议您将日期存储为 date 而不是字符串。出于多种原因,例如数据完整性和效率,您应该始终使用正确的数据类型。