0
votes

Type de date de diffusion pour afficher uniquement l'heure

Dans ma base de données (une base de données Oracle 11), j'ai un attribut qui est de type Date mais qui a une heure dans la valeur pour une raison quelconque, idk pourquoi il est de type Date et non DateTime. Lorsque je sélectionne ce "Position_time" Bien sûr, il affiche simplement la date, mais lorsque je tente un filtre sur la colonne, plus d'options sont affichées de la même date plusieurs fois, donc une valeur d'heure est présente dans cette colonne même si elle est de type date . Lien vers l'image du contexte position_time

Comme le montre l'image même si l'attribut est de type Date, il contient une heure "composant" Cela n'apparaît pas dans l'aperçu btw uniquement lorsque j'essaye de filtrer la colonne idk de ce qui compte.

Je voudrais extraire cette heure de ma date. J'ai vu de nombreux articles expliquant comment extraire d'une colonne DateTime mais pas d'une date. Je ne peux pas changer le type de cette colonne. Y'a-t-il une quelconque façon de réussir cela? par exemple

select
format(tr.position_time)
from positions


2 commentaires

Dans votre capture d'écran, il y a position_date et position_time . Pourquoi avez-vous des colonnes séparées pour la date et l'heure pour commencer? Êtes-vous confronté à des répétitions (par exemple, tous les jours à huit heures) ou quelle en est la raison? Malheureusement, Oracle n'a pas de types de données pour la date et l'heure, il n'a qu'un type de date / heure qu'il appelle DATE pour aggraver les choses. Le stockage de la date et de l'heure séparément dans deux colonnes de date (heure) vous oblige à utiliser les fonctions date / heure chaque fois que vous souhaitez les combiner.


@ johnlogistic1 Si vous souhaitez annuler la suppression de votre question J'ai une réponse pour vous.


3 Réponses :


0
votes

Vous convertiriez en une chaîne:

select to_char(tr_position_time, 'HH24:MI:SS')
from positions;


0 commentaires

1
votes

Voulez-vous dire comme ceci:

Select to_char(position_time,'HH24:MI:SS') from positions;

si vous passez déjà le type de date comme paramètre, utilisez simplement la fonction to_char pour en extraire l'heure. p>

Par exemple:

    select to_char(to_date(position_time,'dd-mm-yyyy HH24:MI:SS'),
'HH24:MI:SS') time from positions;


0 commentaires

0
votes

Dans Oracle, le type de données date se compose de date + heure.

C'est le paramètre NLS de votre IDE qui affiche les données comme ceci. p >

Si vous voulez afficher la date et l'heure, utilisez:

ALTER SESSION SET NLS_DATE_FORMAT = 'dd-mon-yyyy hh24:mi:ss';

select
tr.position_time -- formatting is not needed
from positions

Ou si vous voulez juste une portion de temps, utilisez:

select
To_char(tr.position_time,'hh24:mi:ss')
from positions


0 commentaires