【问题标题】:Proper record not displaying for data needed in oracleoracle 中需要的数据没有显示正确的记录
【发布时间】:2021-03-18 18:17:00
【问题描述】:

我有一个要求,我想显示从今天起不应超过 6 个月的相关数据。所以我写了下面的查询,但它也显示了2019 的数据。

select CR.CHANGEREQUESTID ,CR.CHANGEREQUESTNUMBER, CR.STATENAME, CR.NETWORKTYPE, CR.CREATEDON, 
CR.LASTMODIFIEDON,
NHQ.SAP_ID, NHQ.STATE, NHQ.NEW_LATITUDE, NHQ.NEW_LONGITUDE, NHQ.OLD_LATITUDE, NHQ.OLD_LONGITUDE
from CHANGEREQUESTS CR
inner join TBL_NHQ_CIRCLE_INFO NHQ
on CR.CHANGEREQUESTID = NHQ.CHNGREQUEST_ID
where CR.lastmodifiedon > add_months(sysdate, -12)
and CR.CHANGETYPEID=55;

请提出这里有什么问题。

【问题讨论】:

  • 6 个月与 add_months(sysdate, -12)?
  • @Littlefoot:我将 12 更改为 6,但仍有 2019 年的日期......!!
  • @hud:这似乎不太可能。也许您的系统时间完全错误? select sysdate from dual; 返回哪个日期?
  • @ThorstenKettner:返回为07-12-20

标签: sql oracle datetime inner-join where-clause


【解决方案1】:

此条件为您提供所有不到 1 年的记录:

where CR.lastmodifiedon > add_months(sysdate, -12) 

如果您想要超过 6 个月的记录,那就是:

where CR.lastmodifiedon < add_months(sysdate, -6)

另一方面,如果您想要 6 个月前和今天之间的日期:

where CR.lastmodifiedon > add_months(sysdate, -6) and  CR.lastmodifiedon <= sysdate

【讨论】:

  • 我仍然可以查看最后修改日期为23-09-2019的一条记录
  • @hud:嗯,那个日期已经超过 6 个月,所以它确实满足条件......
  • 不,我的要求是。我想要从当前日期起 6 个月内的日期数据
  • 感谢工作...!我在&lt;&gt; 标志上犯了一个愚蠢的错误
猜你喜欢
  • 1970-01-01
  • 2018-08-08
  • 1970-01-01
  • 1970-01-01
  • 2018-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-03
相关资源
最近更新 更多