我有一個TIMESTAMP
字段包含數據:13-09-16 23:56:00.000000000 AMERICA/NEW_YORK
年份值錯誤地顯示爲0013
我採購從Java這個數據到日曆對象,並在今年被表示爲0013
。 SQL開發人員還將to_char(order_date,'YYYY-MM-DD')
作爲0013
運行時的日期表示。
爲什麼?
我有一個TIMESTAMP
字段包含數據:13-09-16 23:56:00.000000000 AMERICA/NEW_YORK
年份值錯誤地顯示爲0013
我採購從Java這個數據到日曆對象,並在今年被表示爲0013
。 SQL開發人員還將to_char(order_date,'YYYY-MM-DD')
作爲0013
運行時的日期表示。
爲什麼?
我認爲你必須改變模式:
to_char(order_date,'YY-MM-DD')
YYYY是四個數年
YY應該工作多年兩位數(也許它會Ë顯示爲1913年未2013)
您的字段格式不正確,應該是2013-09-16 23:56:00.000000000
。如果您將此存儲在SQL Timestamp列中,數據庫應自動更正此錯誤(或將其更改爲0013-09-16 23:56:00.000000000
)。
您得到0013的SQL開發人員和Java的原因是因爲您要求的格式爲四位數年份YYYY
,此值爲兩位數年份。您需要指定YY
才能獲得兩位數字。
儘管問題的核心是你的時間戳沒有正確存儲。
「RR」或「RRRR」 - 年的格式
「RR」,您可以存儲只使用兩個數字在21世紀20世紀日期。 另請參見:關於RR中日期時間格式元素的其他討論參考資料 數據庫SQL參考
'RRRR'全年。接受4位或2位輸入。如果是2位數,則提供與RR相同的返回 。如果你不想要這個功能,那麼輸入4位數的年份。
的Oracle®數據庫 SQL快速參考 10g第2版(10.2) B14195-01
如果SQL返回to_char(order_date,'YYYY-MM-DD')
爲0013-nn-nn
,這意味着一年實際上是年13AD,所以它的顯示正確0013
。
我知道這是相當過時的,但我想我會添加我的解決方案,因爲TO_CHAR函數從來沒有爲我工作。
使用 TO_DATE(yourDateField,'DateFormat')
這應該把它放在正確的格式。
這很有道理,我將不得不考慮如何解析日期和添加到數據庫。謝謝 –