2016-05-30 167 views
0

我已經是在VARCHAR2(11)列在數據庫中的以下日期:錯誤的日期格式

select valid_untill from SALES_ORDERS_V where header_id = 7999410; 

30月-2016

使用RTF模板XML源,報告輸出(PDF)是:

4950-11-19 04:45:49:0

我不知道它等於「30-May-2016」。

這是爲什麼顯示這個,因爲我沒有在rtf中進行任何格式化?

回答

0

不熟悉RTF或XML-Publisher,但是無論何時您檢索以字符串格式保存的日期,如果您在代碼中將其用作日期而不是字符串,則必須確保正確檢索它。

在這種情況下,用你的select語句:它不應該是select valid-until from...(或者它真的拼錯了,最後有兩個l:valid_until?)如果它是用作日期的,它應該是

select to_date(valid_until, 'dd-Mon-yyyy') from ... 

真的在這裏的問題是,日期存儲爲一個字符串,而不是日期數據類型。祝你好運!

+0

無法得到的重點,如果它存儲爲字符串,那麼爲什麼我們不能將其顯示爲字符串? –

+0

顯然,您的代碼將其解釋爲日期,因此它期望它作爲日期。也許你有一個聲明爲日期數據類型的變量,你可以爲其分配這個字符串。很難知道,因爲您沒有真正分享過任何代碼。但是,如果從字符串到日期的轉換髮生在任何地方(在查詢中,代碼中或其他任何地方),尤其是如果它是隱式轉換,因爲您傳遞了一個字符串,但編譯器期望的是日期,那麼您將遇到此問題。嘗試查看代碼中使用此值的位置。 – mathguy

+0

您可以將其顯示爲字符串,但如果您想對日期進行比較,則必須先將該字符串轉換爲帶有to_date的日期。如果要更改字符串表示的格式,請使用to_date將其更改爲DATE,然後使用to_char將其更改回字符串,並使用所需的格式。無論如何,設計失敗首先將日期存儲爲varchar。 – EdStevens