Je travaille actuellement sur une table dans la base de données Oracle où des valeurs de temps sont stockées au format AM/PM. Par défaut, les heures sont un type de données VARCHAR2 donc je les ai convertis en utilisant la fonction to_date. Ce que je fais est de comparer deux moments différents dans la table et exécuter une requête qui devrait renvoyer les résultats pour tous les temps contenus dans cet intervalle. L'intervalle est acquis en utilisant la condition entre. Voici un exemple:Comparaison des temps d'horloge en SQL (Oracle)
SELECT TIME
FROM TIME_TABLE
WHERE to_date(TIME,'HH:MI:SS PM') between
to_date('04:00:00 PM', 'HH:MI:SS PM') and
to_date('08:00:00 PM', 'HH:MI:SS PM');
Le problème est que lorsque vous ne déclarez pas la date en utilisant la fonction to_date, il sera par défaut automatiquement au 1er du mois en cours. Ainsi, si je voulais obtenir tous les résultats de 23h59 à 00h00, j'obtiendrais des résultats incorrects. Fondamentalement, je veux calculer l'intervalle de temps d'une manière où il boucle au lieu de aller seulement dans une direction comme il le fait naturellement. Y a-t-il un moyen d'accomplir cela?
Évidemment, vous ne devriez jamais stocker des dates comme varchar dans votre base de données. Y a-t-il une raison pour laquelle vous n'utilisez pas l'horodatage? – wvdz
@popovitsj Malheureusement, ce n'est pas une base de données que j'ai créée. C'est celui sur lequel je travaille actuellement qui a déjà été établi. Est-ce que l'horodatage utiliserait ce problème? –
pourquoi ne pas simplement le convertir avant de comparer ?? –