2012-05-04 21 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”是第一个项目。