2012-02-22 93 views
0

從dual中選擇localtimestamp;如何避免localtimestamp的毫秒部分?

以上查詢顯示此格式的結果爲22-FEB-12 04.27.02.225354000 PM。

如何編寫查詢來獲取2月22日,12 02年4月27日下午

+0

這只是實際數據的字符串表示形式。無論何時將其展示給用戶,您都可能會應用格式。那麼爲什麼要在數據庫級別上打擾呢? – Joey 2012-02-22 11:11:00

回答

2

或者:

select current_date from dual; 

或者:

select to_char(localtimestamp,'dd-MON-yyyy hh.mi.ss AM') from dual; 

雖然沒有返回timestamp格式。

+0

謝謝...第二個工程.. – user1148952 2012-02-22 11:24:11

0

如果其結果必然是一個TIMESTAMP有幾個選項。嘗試運行以下:

SELECT LOCALTIMESTAMP, 
     CAST(LOCALTIMESTAMP AS TIMESTAMP(0)) AS CAST_TIMESTAMP0, 
     CURRENT_DATE, 
     CAST(CURRENT_DATE AS TIMESTAMP) AS DATE_CAST_TO_TIMESTAMP, 
     TO_TIMESTAMP(TO_CHAR(LOCALTIMESTAMP, 'DD-MON-YYYY HH24:MI:SS'), 'DD-MON-YYYY HH24:MI:SS') AS CHAR_TIMESTAMP, 
     CAST(TO_TIMESTAMP(TO_CHAR(LOCALTIMESTAMP, 'DD-MON-YYYY HH24:MI:SS'), 'DD-MON-YYYY HH24:MI:SS') AS TIMESTAMP(0)) AS TRUCATED_TIMESTAMP 
    FROM DUAL 

注意,CAST_TIMESTAMP0,CURRENT_DATE,和DATE_CAST_TO_TIMESTAMP值四捨五入到最接近的第二而非截短 - 重新運行查詢直到LOCALTIMESTAMP的小數部分是0.5和1.0之間,看這個。如果四捨五入值是可以接受的,那麼你可以很好地去使用。如果不是,您可能需要使用最後兩個版本將時間戳轉換爲字符串並再次返回。

還要注意,上面的CHAR_TIMESTAMP值仍然有默認的小數位數,但都是零。如果你不想要這個,你需要使用TRUNCATED_TIMESTAMP值。

分享和享受。