web-dev-qa-db-fra.com

Type de date sans heure dans Oracle

Dans Oracle 10g, j'ai eu un problème lors de l'utilisation du type DATE dans ma table. Je veux juste que mon magasin de champs DATE seulement DATE sans temps automatiquement.

Il y a tellement de solutions, je sais que c'est comme utiliser TO_CHAR et TO_DATE ou TRUNC mais je me suis rendu compte que j'utilise tellement de procédures pour insérer ou mettre à jour des données et que je n'ai pas le temps de toutes les mettre à jour.

Comment pourrais-je résoudre ce problème?

19

La meilleure solution serait de:

  1. supprimer toutes les heures de votre colonne DATE (update yourtable set yourdatecolumn = trunc(yourdatecolumn))

  2. assurez-vous que toutes les dates futures ne contiennent aucune partie de temps en plaçant une contrainte de vérification sur la colonne en utilisant check (yourdatecolumn = trunc(yourdatecolumn))

  3. ajustez toutes vos instructions INSERT et UPDATE ou -si vous êtes chanceux- ajustez votre API pour n'insérer que les dates TRUNCed.

La solution la plus simple serait de:

  1. (Facultatif) supprimez toutes les heures de votre colonne DATE.

  2. Créez un déclencheur d'insertion ou de mise à jour de la base de données avant la ligne qui définit :new.yourdatecolumn := trunc(:new.yourdatecolumn);

27
Rob van Wijk