2013-10-23 75 views
1

我有一個TIMESTAMP字段包含數據:13-09-16 23:56:00.000000000 AMERICA/NEW_YORK年份值錯誤地顯示爲0013

我採購從Java這個數據到日曆對象,並在今年被表示爲0013。 SQL開發人員還將to_char(order_date,'YYYY-MM-DD')作爲0013運行時的日期表示。

爲什麼?

回答

0

我認爲你必須改變模式:

to_char(order_date,'YY-MM-DD') 

YYYY是四個數年

YY應該工作多年兩位數(也許它會Ë顯示爲1913年未2013)

1

您的字段格式不正確,應該是2013-09-16 23:56:00.000000000。如果您將此存儲在SQL Timestamp列中,數據庫應自動更正此錯誤(或將其更改爲0013-09-16 23:56:00.000000000)。

您得到0013的SQL開發人員和Java的原因是因爲您要求的格式爲四位數年份YYYY,此值爲兩位數年份。您需要指定YY才能獲得兩位數字。

儘管問題的核心是你的時間戳沒有正確存儲。

+0

這很有道理,我將不得不考慮如何解析日期和添加到數據庫。謝謝 –

2

「RR」或「RRRR」 - 年的格式

「RR」,您可以存儲只使用兩個數字在21世紀20世紀日期。 另請參見:關於RR中日期時間格式元素的其他討論參考資料 數據庫SQL參考

'RRRR'全年。接受4位或2位輸入。如果是2位數,則提供與RR相同的返回 。如果你不想要這個功能,那麼輸入4位數的年份。

的Oracle®數據庫 SQL快速參考 10g第2版(10.2) B14195-01

0

如果SQL返回to_char(order_date,'YYYY-MM-DD')0013-nn-nn,這意味着一年實際上是年13AD,所以它的顯示正確0013

1

我知道這是相當過時的,但我想我會添加我的解決方案,因爲TO_CHAR函數從來沒有爲我工作。

使用 TO_DATE(yourDateField,'DateFormat')

這應該把它放在正確的格式。