Oracle中的截止日期转换问题?
在Oracle中的截止日期转换问题?,oracle,Oracle,在表1中,“开始时间”字段值包含的日期为12年4月14日12:00:00 AM,start\u time\u hour的值为hour,start\u time\u minutes的值为minutes,start\u time\u AM\u pm的值为AM或pm。我想把这些列合并成一个字符串。我将转换成日期格式,如到_date('14-04-12 05:08 PM','DD-MM-YYYY HH:MI PM')。但是它抛出了错误ORA-01858:在需要数字的地方发现了一个非数字字符。这件事有什么
表1
中,“开始时间”字段值包含的日期为12年4月14日12:00:00 AM
,start\u time\u hour
的值为hour
,start\u time\u minutes
的值为minutes
,start\u time\u AM\u pm
的值为AM或pm
。我想把这些列合并成一个字符串。我将转换成日期格式,如到_date('14-04-12 05:08 PM','DD-MM-YYYY HH:MI PM')
。但是它抛出了错误ORA-01858:在需要数字的地方发现了一个非数字字符。这件事有什么问题。。有没有人能帮我把上面的要求转换成日期格式
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;
如果schedule.start_date在00:00被截断,并且您在start_time_hour和start_time_minutes列中有时间信息(糟糕的设计-您不需要这些列,日期类型本身就有时间)。您可以这样做:
Select to_char(schedule.start_date, 'DD-MM-YYYY HH:MI AM')
from table1 schedule;
好吧,我认为你的问题[更不用说其他评论]是你把月份(字符串)放进了MM(数字)。
i、 e.提取(从计划开始的月份。开始日期),因此“月”是列中的第一个日期项目,但格式掩码“DD”是第一个项目。请诚实回答:您能阅读自己的问题吗?您已经有日期了!你为什么要改成约会?当您已经有此信息时,为什么要存储小时和分钟以及上午/下午?schedule.start\u date包含小时和分钟,或者在00:00被截断?
Select
to_char(schedule.start_date + start_time_hour/24 + start_time_minutes/1440
,'DD-MM-YYYY HH:MI AM')
from table1 schedule;