Effectivement, il n'existe pas de type "heure simple" sous Oracle, et c'est bien un type DATE qu'il faut prendre.
Comme vous l'avez compris, il faut, lors de l'insertion, formater votre heure avec TO_DATE pour que celle-ci soit reconnue valablement.
Plus concrètement, quand vous fournissez la chaîne '12:25', le format 'HH:MI' fait comprendre à Oracle que cela représente un nombre d'heures et un nombre de minutes.
Pour autant, en interne, une colonne de type DATE contient forcément aussi des composants de type jour, mois, année, et on ne peut pas faire autrement.
Autrement dit, la partie date en elle-même est stockée pour rien et n'a aucune importance pour vous.
C'est lorsqu'on fera un SELECT qu'on précisera à l'aide de TO_CHAR qu'on ne veut visualiser que la partie horaire.
SELECT TO_CHAR(heure_depart, 'HH24:MI') from ma_table;
De cette façon, vous ne verrez pas la partie date, bien qu'elle fasse véritablement partie de la valeur stockée en base.
Pour le reste de votre INSERT, la syntaxe n'est pas correcte : il faut placer les chaînes de caractères entre apostrophes.
Partager