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;

table1start_date 字段值中包含的日期为14-Apr-12 12:00:00 AMstart_time_hour值为hourstart_time_minutes值为minutesstart_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。这是什么问题..可以帮助我如何按照我的上述要求转换为日期格式。

4

2 回答 2

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

如果 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;
于 2012-05-04T08:19:50.633 回答
0

好吧,我认为您的问题 [更不用说其他评论] 是您将 MONTH (字符串)放入 MM (数字)中。即提取(MONTH FROM schedule.start_date),因此“MONTH”是列中的第一个日期项,但格式掩码“DD”是第一项。

于 2012-05-04T11:39:34.307 回答