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

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