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;

start_datetable1フィールドの値には、の日付が含まれ、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;

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;
于 2012-05-04T08:19:50.633 に答える
0

さて、あなたの問題は [他のコメントは言うまでもなく] MM (数値) に MONTH (文字列) を入れていることだと思います。つまり、EXTRACT (MONTH FROM schedule.start_date) の場合、"MONTH" は列の最初の日付項目ですが、書式マスク "DD" は最初の項目です。

于 2012-05-04T11:39:34.307 に答える