如何在不使用to_date / to_char函数的情况下比较oracle sql中的日期?

时间:2016-04-13 06:19:09

标签: sql oracle

jdbc:mysql://xxx.xxx.xxx.xxx:nnnnn/db_name?allowMultiQueries=true&rewriteBatchedStatements=true&user=xxxx&password=yyyy

我想使用特定的日期格式比较日期,但是当我运行此查询时,需要花费大量时间。有什么方法可以用最短的时间得到相同的结果吗?

1 个答案:

答案 0 :(得分:1)

你有EVENT_DATE的索引吗?如果你没有,那么你就可以获得全表扫描,并且在没有构建索引的情况下获得最快速度。

如果您确实有索引,则您的查询无法使用它,因为to_char()会禁用它。让我们假设你的表有足够的不同日期,并且它们充分聚集在一起,以使其值得使用索引。您可以通过多种方式更改查询以使用索引。

如果EVENT_DATE仅包含日期元素,请使用此

where event_date = date '2016-04-08'

如果EVENT_DATE包含时间元素,请使用此

where event_date >= date '2016-04-08'
and event_date < date '2016-04-09'

请注意,Oracle以特殊方式存储DATE值。它们不与任何特定掩模一起存储。格式化只是一个显示事物。所以我们需要做的就是以有意义的格式传递目标日期。