web-dev-qa-db-ja.com

Oracleの時間なしの日付タイプ

Oracle 10gでは、テーブルでDATEタイプを使用すると問題が発生しました。 DATEフィールドストアのみDATEに時間をかけずに自動的に保存したいだけです。

解決策はたくさんあります。TO_CHARおよびTO_DATEまたはTRUNCですが、データの挿入または更新に多くの手順を使用しており、それらすべてを更新する時間がないことに直面しました。

この問題を解決するにはどうすればよいですか?

19

最善の解決策は次のとおりです。

  1. dATE列からすべての時間を削除します(update yourtable set yourdatecolumn = trunc(yourdatecolumn)

  2. check (yourdatecolumn = trunc(yourdatecolumn))を使用して列にチェック制約を設定することにより、すべての将来の日付に時間部分が含まれないようにします

  3. すべてのINSERTおよびUPDATEステートメントを調整するか、運が良ければAPIを調整して、TRUNCされた日付のみを挿入します。

最も簡単な解決策は次のとおりです。

  1. (オプション)DATE列からすべての時間を削除します。

  2. :new.yourdatecolumn := trunc(:new.yourdatecolumn);を設定する前の行挿入または更新データベーストリガーを作成する

27
Rob van Wijk