簡體   English   中英

Oracle to_date SQL格式化奇怪的行為

[英]Oracle to_date SQL formatting odd behavior

我已經搜尋過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

DATE沒有格式,只有在轉換為用於顯示目的的字符串時才會格式化。 如果使用的是SQL Plus,則在顯示DATE列(不使用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,那么您所使用的任何工具都會做類似的事情,並且可能以不同的方式指定顯示日期的格式。

日期是一個時間點,它沒有格式(例如數字:它們沒有格式)。 當顯示日期時,很顯然它必須獲得一種格式:如果您未專門為Oracle提供格式,則將使用會話的默認格式(會話參數NLS_DATE_FORMAT)。

結果:將DATE數據類型用於日期算術和存儲(無格式)。 需要顯示日期時(在報告中或在GUI中),請使用to_char函數或等效函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM