在 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
而不是字符串。出于多种原因,例如数据完整性和效率,您应该始终使用正确的数据类型。
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
而不是字符串。出于多种原因,例如数据完整性和效率,您应该始终使用正确的数据类型。