当前位置: 首页 > 面试题库 >

如何在Oracle中仅基于日期部分比较两个DATE值?

融烨磊
2023-03-14
问题内容

我正在尝试通过以下查询获取过去30天的计数-

SELECT date_occured, COUNT(*) FROM problem
WHERE date_occured >= (CURRENT_DATE - 30)
GROUP BY date_occured;

//date_occured field is of type DATE.

基本上,在我的查询中,我尝试仅比较condition中的日期部分date_occured >= (CURRENT_DATE - 30),但似乎也比较时间。

我按以下方式尝试了TRUNC-

TRUNC(date_occured) >= TRUNC(CURRENT_DATE - 30)

但是,当运行查询时,它永远不会返回

我也试过-

SELECT date_occured, COUNT(*) FROM problem    
GROUP BY date_occured
HAVING TRUNC(date_occured) >= TRUNC(CURRENT_DATE - 30);

再次,它永远不会返回。

如何在Oracle中仅比较两个DATE值中的日期部分?


问题答案:

对于这种情况,您只需要向右移TRUNC:

WHERE date_occured >= TRUNC(CURRENT_DATE - 30)

为什么?因为如果TRUNC(date_occured)晚于TRUNC(CURRENT_DATE-30),那么TRUNC(date_occured)之后的任何时间也必定晚于TRUNC(CURRENT_DATE-30)。

显然,date_occured> = TRUNC(date_occured)总是正确的(考虑一下)。

逻辑说,如果A> = B且B> = C,则得出A> = C

现在替换为:

  • 答:date_occured
  • B:TRUNC(发生日期)
  • C:TRUNC(CURRENT_DATE-30)


 类似资料:
  • 问题内容: 如何使用Python比较两个日期以查看稍后的日期? 例如,我想检查当前日期是否超过了我创建的假期日期列表中的最后日期,因此它将自动发送电子邮件,告诉管理员更新holiday.txt文件。 问题答案: 使用方法和运算符及其种类。

  • 问题内容: 我正在尝试比较两个日期,而我只想比较日期部分而不是时间部分,这就是我在程序中存储日期的方式: 我有一个: 我想用 但是由于还涉及时间部分,所以我无法获得正确的答案。我该如何解决我的问题? 我不想使用JODA-TIME 问题答案: 您可以像这样逐个比较价值 要么 如果您使用Date类,请考虑改用Calendar类这是最优雅的解决方案,为此使用Calendar和Comparator 用法:

  • 问题内容: 如果日期格式为和,如何在php中比较两个日期。 我正在使用此代码: 但它不起作用.. 问题答案: 您必须确保您的日期是有效的日期对象。 尝试这个: 然后,您可以执行该方法来获得差异。

  • 问题内容: 如何在PHP中比较两个日期? 在数据库中,日期看起来像2011-10-2。 如果我想将今天的日期与数据库中的日期进行比较,看哪个更大,我该怎么做? 我试过了 但这并不是真的那样。还有另一种方法吗? 更新:我知道这篇文章有点老,但是我只想提及carbon,它是与laravel一起使用的一类,但可以与经典php一起使用,并且它确实与日期有关。检查一下:碳 问题答案: 在数据库中日期看起来像

  • 我在android studio中使用firebase创建了一个聊天应用程序,我的所有活动都正常运行,除了日期显示, 我想设置日期在一次如果它是相同的否则显示新的日期如果它是不相同的上一个日期我试图设置但它显示一些错误 这里是错误 我获取当前日期 然后把它交给聊天室。java使用按钮。OnclickListner 这是我的适配器 有人知道怎么解决这个问题吗?

  • 问题内容: 我想有一个compareTo方法,它忽略java.util.Date的时间部分。我想有很多方法可以解决这个问题。最简单的方法是什么? 问题答案: 虽然Joda Time当时是一个不错的建议,但请java.time尽可能使用Java 8+中的库。 我的首选是使用Joda Time,这使此操作变得异常简单: 编辑:如注释中所述,如果你使用DateTimeComparator.getDate