2012-05-04 20 views
0
SELECT TO_DATE ( TO_CHAR (EXTRACT (MONTH FROM schedule.start_date)) 
       || '-' 
       || TO_CHAR (EXTRACT (DAY FROM schedule.start_date)) 
       || '-' 
       || TO_CHAR (EXTRACT (YEAR FROM schedule.start_date)) 
       || ' ' 
       || TO_CHAR (schedule.start_time_hour) 
       || ':' 
       || TO_CHAR (schedule.start_time_minutes) 
       || schedule.start_time_am_pm, 
       'DD-MM-YYYY HH24:MI pm' 
       ) 
    FROM table1 schedule; 

table1的起始日期字段值包含日期14-Apr-12 12:00:00 AMstart_time_hour具有hour的值,start_time_minutes具有minutes值,start_time_am_pm具有AM or PM值。我想將這些列合併爲一個字符串。我將轉換爲日期格式,如to_date('14-04-12 05:08 PM','DD-MM-YYYY HH:MI PM')。但它會拋出錯誤ORA-01858: a non-numeric character was found where a numeric was expected。什麼是這個問題..可以幫助我如何轉換成日期格式與我的上述要求。Oracle中的TO_DATE轉換問題?

+3

請老實回答:你能讀懂你自己的問題嗎? – zerkms

+1

你已經有了約會!你爲什麼想要轉換成日期?當你已經有這些信息時,你爲什麼要存儲小時和分鐘以及AM/PM? – Ben

+0

schedule.start_date包含小時一分鐘或在00:00截斷? –

回答

0
Select to_char(schedule.start_date, 'DD-MM-YYYY HH:MI AM') 
from table1 schedule; 

IF schedule.start_date在00:00截斷,你必須在start_time_hour和start_time_minutes列時間信息(糟糕的設計 - 你不需要這些列,DATE類型有時間本身)。您可以這樣做:

Select 
    to_char(schedule.start_date + start_time_hour/24 + start_time_minutes/1440 
      ,'DD-MM-YYYY HH:MI AM') 
from table1 schedule; 
0

嗯,我覺得你的問題[不用提其他意見]是你把MONTH(字符串)到MM(數字)。 即EXTRACT(MONTH FROM schedule.start_date),所以「MONTH」是來自列的第一個日期項目,但格式掩碼「DD」是第一個項目。