-2

私は疑問に思っていました-私は自分のシステムでsysdateをよく使用しています.sysdateの形式がDD/MM/YYYY HH24:MI:SS.

の形式で現在の日付を返す他の関数をインターネットで調べましたDD/MM/YYYYが、運がありませんでしたcurrent_date , current_timestamp.ETCも時間形式を提供してくれます..

インデックス付きの日付列を現在の日付と比較するときのパフォーマンスを向上させるために、これが必要です。

では、目的の形式を返すシステム関数を知っている人はいますか? またはそれをバイパスする方法は?

4

2 に答える 2

2

「日付」列が DATE 型の場合、「フォーマット」を気にする必要はありません。trunc(column_name) と trunc(sysdate) を比較する必要があります。また、関数を使用すると索引が使用できなくなるため、重大なパフォーマンスの問題が発生する場合は、関数ベースの索引を作成します。エレガントではない解決策は

WHERE mydatecol > trunc(sysdate) AND mydatecol < trunc(sysdate +1)

やりたくないことは、DATE のバイナリ概念を日付の文字列表現と混同することです。文字列とは、人間がデータとして認識する文字列にすぎませんが、コンピューターにとって「2016-02-14」は「ここにあなたのサインがあります」以上の意味はありません。

于 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 に答える