2

挿入クエリがあります:

INSERT INTO THE_TABLE (Field_A) 
VALUES (TO_DATE('08/12/2011 08:35:42 AM','HH:MI:SS PM'))
WHERE Something = 'SomethingElse'

Field_A は日付フィールドです。クエリを実行すると、Field_A にはまだ日付と時刻が表示されます。

時間だけをつかむ方法はありますか?

To_Char() を試してみましたが、文字列に変換され、フィールドはそれを取りません。

TO_DATE('08:35:42 AM','HH:MI:SS PM') も試しましたが、どちらも機能しません。テーブルに日付と時刻が表示されます。

4

2 に答える 2

3
TO_DATE('08:35:42 AM','HH:MI:SS PM')

これが機能しない理由は、これが完全な日付ではないためです。to_date('07/12/2011','MM/DD/YYYY') を使用した場合でも、Oracle は日付と時刻を格納しますが、時刻のすべてのコンポーネントをゼロにします。したがって、保存される実際の日付は 07/12/2011 HH:MI:SS です。

時間コンポーネントを個別に保存する場合は、varchar フィールドにする必要があり、日付部分に追加して完全な日付を取得する必要があります。例..

Select to_date(
          to_char(date_field_stored_as_date,'DD-MON-YYYY') || 
          ' ' ||
          to_char(time_field_stored_as_varchar),
         'DD-MON-YYYY HH24:MI:SS'    
       )
于 2011-08-12T15:37:47.323 に答える
2

フィールドが日付フィールドの場合、常に日時の日付部分があります。

秒数などの別のものとして保存し、変換関数を使用して時間に変換することができます。数値を取って一度に変換しないように見えるのでTO_CHAR、アプリケーション側でこれを行う必要があります。

したがって、DATE混乱を避けるためにとにかくとして保存します。使用するときは日付部分を無視してください。

ところで、これ:

To_Char() を試してみましたが、文字列に変換され、フィールドはそれを取りません。

正しい形式の文字列は暗黙的にDATEs に変換されるため、完全には正しくありません。

于 2011-08-12T15:18:19.347 に答える