-2

我一直在想 - 我的系统上经常使用 sysdate,当将它与我的日期列进行比较时,我必须使用 trunc(sysdate) 因为 sysdate 的格式是DD/MM/YYYY HH24:MI:SS.

我在互联网上查看了其他函数以返回当前日期的格式DD/MM/YYYY但没有运气,current_date , current_timestampETC 也给了我小时格式..

在将索引日期列与当前日期进行比较时,我需要它以获得更好的性能。

那么,有人知道返回所需格式的系统函数吗?或绕过它的方法?

4

2 回答 2

2

如果您的“日期”列是 DATE 类型,那么您不需要关心“格式”。您需要将 trunc(column_name) 与 trunc(sysdate) 进行比较。如果这会导致严重的性能问题,因为函数的使用消除了索引的使用,那么创建一个基于函数的索引。一个不太优雅的解决方案是

其中 mydatecol > trunc(sysdate) AND mydatecol < trunc(sysdate +1)

您不想做的是将 DATE 的二进制概念与日期的字符串表示混淆。字符串只是您作为人类识别为数据的字符串,但对于计算机而言,“2016-02-14”与“hereisyoursign”没有任何意义。

于 2016-02-14T13:15:03.757 回答
-2

您可以更改变量 NLS_DATE_FORMAT。

ALTER SESSION SET NLS_DATE_FORMAT = 'DD/MM/YYYY';

另见http://www.dba-oracle.com/t_nls_date_format.htm

于 2016-02-14T09:40:25.650 回答