Oracle to_date SQLフォーマット奇数動作
質問
私はこれがかなり明白だと思っているので、私はSOウェブサイトをトロールしましたが、悲しいかな私はまだ見つけていません。基本的にセットアップは次のとおりです。
私はそうなようなテーブルに文字列を持っています:
06/22/2010 00:00:00
私はそれについて選択します:
SELECT To_Date(item, 'MM/DD/YYYY HH24:MI:SS') from that_table
それが効果的に私はやっています
SELECT To_Date('06/22/2010 00:00:00', 'MM/DD/YYYY HH24:MI:SS') from that_table
私のデータベースが返されます:
22.06.2010 00:00:00
今、私はできることを知っています
to_char(to_Date('06/22/2010 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 'MM/DD/YYYY HH24:MI:SS')
しかし、日付形式を返すために選択が必要です(MM/DD/YYYY HH24:MI:SS
)、文字列ではありません。どうやってやるの?
編集:実際の出力:
22.06.2010 00:00:00
目的の出力(日付形式):
06/22/2010 00:00:00
解決
日付は時点で、形式はありません(数字など:フォーマットがありません)。日付を表示する場合、明らかにフォーマットを取得する必要があります。Oracleに特に形式を指定しない場合、セッションのデフォルト形式が使用されます(セッションパラメーターnls_date_format)。
その結果、日付算術とストレージ(形式なし)に日付データタイプを使用します。使用 to_char
日付を表示する必要がある場合(レポートまたはGUIで)関数または同等のもの。
他のヒント
日付にはフォーマットがありません。表示目的で文字文字列に変換された場合にのみフォーマットされます。 SQL Plusを使用している場合、日付列を表示するとき(to_charを使用して明示的にフォーマットすることなく)、SQL Plus自体はNLS_DATE_FORMAT設定を使用してTO_CHAR変換を実行します。
SQL> select sysdate from dual;
SYSDATE
---------
23-JUN-10
SQL> alter session set nls_date_format = 'YYYY-MM-DD HH24:MI:SS';
Session altered.
SQL> select sysdate from dual;
SYSDATE
-------------------
2010-06-23 15:17:12
SQL Plusを使用していない場合、使用しているツールはどんなツールでも同様のことを行い、表示の日付形式を指定する別の方法がある場合があります。