J'ai une colonne nommée StartDate
contenant une date dans ce format: 03-03-2012 15:22
Ce dont j'ai besoin, c'est de le convertir au jour. Il devrait ressembler à ceci: DD/MM/YYYY
Ce que j'ai essayé sans succès est:
select
p1.PA_VALUE as StartDate,
p2.PA_VALUE as EndDate
from WP_Work p
LEFT JOIN PARAMETER p1 on p1.WP_ID=p.WP_ID AND p1.NAME = 'StartDate'
LEFT JOIN PARAMETER p2 on p2.WP_ID=p.WP_ID AND p2.NAME = 'Date_To'
WHERE p.TYPE = 'EventManagement2'
AND TO_DATE(p1.PA_VALUE, 'DD/MM/YYYY') >= TO_DATE('25/10/2012', 'DD/MM/YYYY')
AND TO_DATE(p2.PA_VALUE, 'DD/MM/YYYY') <= TO_DATE('26/10/2012', 'DD/MM/YYYY')
Y a-t-il un moyen de faire cela?
EDIT1: le PA_VALUE
La colonne est: VARCHAR2
Lorsque vous convertissez votre chaîne en date, vous devez faire correspondre le masque de date au format de la chaîne. Cela inclut un élément temporel que vous devez supprimer avec la troncature:
select
p1.PA_VALUE as StartDate,
p2.PA_VALUE as EndDate
from WP_Work p
LEFT JOIN PARAMETER p1 on p1.WP_ID=p.WP_ID AND p1.NAME = 'StartDate'
LEFT JOIN PARAMETER p2 on p2.WP_ID=p.WP_ID AND p2.NAME = 'Date_To'
WHERE p.TYPE = 'EventManagement2'
AND trunc(TO_DATE(p1.PA_VALUE, 'DD-MM-YYYY HH24:MI')) >= TO_DATE('25/10/2012', 'DD/MM/YYYY')
AND trunc(TO_DATE(p2.PA_VALUE, 'DD-MM-YYYY HH24:MI')) <= TO_DATE('26/10/2012', 'DD/MM/YYYY')
Vous pouvez utiliser TRONC sur DateTime pour supprimer la partie heure de DateTime. Donc, votre clause where peut être:
AND TRUNC(p1.PA_VALUE) >= TO_DATE('25/10/2012', 'DD/MM/YYYY')
La fonction TRUNCATE (datetime) renvoie la date avec la partie heure du jour tronquée à l'unité spécifiée par le modèle de format.
Nous pouvons utiliser la fonction TRUNC dans Oracle DB. Voici un exemple.
SELECT TRUNC(TO_DATE('01 Jan 2018 08:00:00','DD-MON-YYYY HH24:MI:SS')) FROM DUAL
Sortie: 1/1/2018
Essayer
SELECT to_char(p1.PA_VALUE,'DD/MM/YYYY') as StartDate,
to_char(p2.PA_VALUE,'DD/MM/YYYY') as EndDate
...