2

无论如何,是否只在“日期”类型的 SQL 字段中插入时间(无日期)

我试过插入:

13:00

01:00

13:00pm

01:00pm

但不断收到错误:

Not A Valid Month
4

2 回答 2

4

问题是字面意思。对于日期/时间值,Oracle 需要 ddMMMyyyy 格式的值。(或者,您可以使用表达式。此处DATE '2001-01-01解释了文字值。)没有日期的时间似乎没有默认格式。

换句话说,你可以得到同样的错误cast('1/1/2001' as date)

相反,请使用以下to_date()功能:

select to_date('10:00', 'hh:mi')
from dual

这为您提供了更多格式的灵活性。

此外,正如 Ben 在评论中指出的那样,这会为您提供指定时间的当前日期。

于 2013-02-23T21:26:56.617 回答
0

使用 SYSDATE 和某个日期的 EXTRACT 和仅时间部分的示例...:

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
 )
/
于 2013-02-25T18:47:12.070 回答