web-dev-qa-db-fra.com

N'obtenez que la date sans heure dans Oracle

J'ai cette requête SQL pour récupérer des données et j'ai cette colonne 'pa.fromdate' qui renvoie une date et une heure. Comment l'obtenir pour ne renvoyer que la date au format 'JJ.MM.AAAA'. J'ai essayé quelque chose comme trunc(to_date(pa.fromdate, 'MM.DD.YYYY')). Ça ne marche pas Comment puis je faire ça?

SELECT pro.inscatid,
  t.epotypeid,
  t.paysum,
  t.note,
  pa.blankno,
  pa.blankseria,
  pa.signtime,
  pa.fromdate,
  ca.accnum,
  ou.name,
  cst.inn,
  pkg_customers.GETCUSTOMERFULLNAME(cst.id) cstfio
FROM epo_orders t
LEFT JOIN epo_orderdetails od
ON od.orderid      = t.id
AND od.iscanceldoc = -1
LEFT JOIN plc_Agree pa
ON pa.id = od.agreeid
LEFT JOIN pro_products pro
ON pro.id = pa.proid
LEFT JOIN nsk_transferdetails td
ON td.transferid = pa.transferid
AND td.orgtypeid = 4
LEFT JOIN cst_customers cst
ON cst.id = t.cstid
LEFT JOIN cst_cstaccounts ca
ON ca.id = t.cstaccid
LEFT JOIN nsk_orgunits ou
ON td.orgunitid    = ou.id
WHERE t.epotypeid IN (159,1010,169,175)
AND rownum         <20;
5
JDoeBloke

Habituellement, on tronquerait simplement la date et l'heure avec TRUNC:

TRUNC(pa.fromdate)

Cela supprime la partie heure de la date/heure, vous obtenez donc la simple date. Ensuite, dans votre couche d’application, vous voudrez bien l’afficher.

Par exemple, vous avez une interface graphique avec une grille. La grille affiche les dates en fonction des paramètres système de l'utilisateur (par exemple, les paramètres de région Windows), mais elle les connaît et peut trier en conséquence. Pour ce faire, vous devez remplir la grille avec dates et non avec chaînes représentant une date.

Si vous voulez un format de chaîne fixe (par exemple pour écrire dans un fichier), vous pouvez utiliser TO_CHAR à la place:

TO_CHAR(pa.fromdate, 'dd.mm.yyyy')
8
Thorsten Kettner

essaye ça

select pro.inscatid,
t.epotypeid,
t.paysum,
t.note,
pa.blankno,
pa.blankseria,
pa.signtime,
to_char(pa.fromdate,'MM.DD.YYYY')fromdate,
ca.accnum,
ou.name,
cst.inn,
pkg_customers.GETCUSTOMERFULLNAME(cst.id) cstfio 
 from
epo_orders t
left join epo_orderdetails od on od.orderid = t.id and od.iscanceldoc = -1
left join plc_Agree pa on pa.id = od.agreeid
left join pro_products pro on pro.id = pa.proid
left join nsk_transferdetails td on td.transferid = pa.transferid and td.orgtypeid = 4
left join cst_customers cst on cst.id = t.cstid
left join cst_cstaccounts ca on ca.id = t.cstaccid
left join nsk_orgunits ou on td.orgunitid = ou.id 
where t.epotypeid in (159,1010,169,175) and rownum<20
0
Ersin Gülbahar

n'utilisez pas to_date() dans la colonne de date, utilisez to_char() avec masque, comme ceci

    select 
    ......
        to_char(pa.fromdate,'MM.DD.YYYY') fromdate
    ......
from ....
where ....
0
Vecchiasignora

Vous pouvez utiliser la fonction to_char() pour cela. Et vous pouvez utiliser trunc() pour résoudre votre problème.

0
Shine

Essayez d'utiliser to_char(pa.fromdate, 'MM.DD.YYYY'), et cela vous donnera le résultat souhaité.

0
Akanksha