2014-01-14 52 views
1

任何想法爲什麼在將日期轉換爲varchar(FYI:數據類型是rdd中的datetime)後,時間戳記丟失 如果我有日期,轉換日期到varchar2失去時間部分

date = 5/2/2011 9:18:26 AM CAST(date as varcchar(100))給出5-2-2011,時間部分丟失。

不知道這樣做的原因,有誰能夠給我一些講解得

據從Oracle官方文檔的CAST指令,它應該允許這樣的演員。 enter image description here

+2

使用'to_char()'你可以更好地控制輸出格式。 –

回答

5

這取決於NLS_DATE_FORMAT

SQL> alter session set nls_date_format = 'fmdd-mm-yyyy'; 

Session altered. 

SQL> select cast(sysdate as varchar2(100)) from dual; 

CAST(SYSDATEASVARCHAR2(100)) 
--------------------------------------------------------------------- 
14-1-2014 

1 row selected. 

SQL> alter session set nls_date_format = 'fmdd-mm-yyyy fmhh24:mi:ss'; 

Session altered. 

SQL> select cast(sysdate as varchar2(100)) from dual; 

CAST(SYSDATEASVARCHAR2(100)) 
--------------------------------------------------------------------- 
14-1-2014 14:17:43 

1 row selected. 

最好使用TO_CHAR,因爲已經建議使用a_horse_with_no_name。

3

cast (date as varchar2)將使用當前活動的nls_date_format,默認情況下,它不包含時間。

要獲得包括時間,你需要設置NLS_DATE_FORMAT:

alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

或者,不改變會話:

to_char(date,'yyyy-mm-dd hh24:mi:ss')