无论如何,只将时间(没有日期)插入“Date”类型的SQL字段
我试过插入:
13:00
和
01:00
和
13:00pm
和
01:00pm
但不断收到错误:
Not A Valid Month
答案 0 :(得分:4)
问题在于文字。对于日期/时间值,Oracle期望以ddMMMyyyy形式的值。 (或者,您可以使用表达式DATE '2001-01-01
。解释文字值here。)似乎没有默认格式的时间没有日期。
换句话说,您可以使用cast('1/1/2001' as date)
获得相同的错误。
相反,请使用to_date()
功能:
select to_date('10:00', 'hh:mi')
from dual
这为您提供了更灵活的格式。
另外,正如Ben在评论中指出的那样,这将为您提供指定时间的当前日期。
答案 1 :(得分:0)
使用EXTRACT和仅限时间部分的SYSDATE和某些日期......的示例:
SELECT hh||':'||mi||':'||ss time_only_portion
FROM
(
Select
EXTRACT(hour From Cast(SYSDATE as timestamp)) hh,
EXTRACT(minute From Cast(SYSDATE as timestamp)) mi,
EXTRACT(second From Cast(SYSDATE as timestamp)) ss
From dual
)
/
SELECT EXTRACT(HOUR From t_stamp) hh
FROM
(
SELECT CAST(to_date('21/02/2012 06:10:00 am', 'dd/mm/yyyy hh:mi:ss am') AS TIMESTAMP) t_stamp
FROM dual
)
/