将TIME插入Oracle SQL,DATE字段

时间:2013-02-23 20:58:23

标签: sql oracle date

无论如何,只将时间(没有日期)插入“Date”类型的SQL字段

我试过插入:

13:00

01:00

13:00pm

01:00pm

但不断收到错误:

Not A Valid Month

2 个答案:

答案 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
 )
/