La requête suivante:
select cdate from rprt where cdate <= TO_CHAR(sysdate, 'YYYY/MM/DD-HH24-MI-SS-SSSSS') and ryg='R' and cnum='C002';
return: 2013/04/27-10:06:26:794
tel que stocké dans la table.
Je souhaite obtenir la date uniquement sous la forme: 27-04-2013
et obtenir le nombre de jours entre la résolution et la date sysdate.
Utilisez la fonction cast () pour convertir l’horodatage en date
select to_char(cast(sysdate as date),'DD-MM-YYYY') from dual;
Pour plus d'informations sur la fonction transtypée Oracle11g http://docs.Oracle.com/cd/B28359_01/server.111/b28286/functions016.htm#SQLRF51256
C'est exactement ce à quoi TO_DATE()
est destiné: convertir un horodatage en date.
Utilisez simplement TO_DATE(sysdate)
au lieu de TO_CHAR(sysdate, 'YYYY/MM/DD-HH24-MI-SS-SSSSS')
.
METTRE &AGRAVE; JOUR:
Selon votre mise à jour, votre colonne cdate
n'est pas un type réel DATE
ou TIMESTAMP
, mais VARCHAR2
. Ce n’est pas une très bonne idée d’utiliser des types de chaînes pour conserver les dates. Il est très gênant et lent de rechercher, comparer et faire tout autre type de calcul sur les dates.
Vous devez convertir votre champ cdate
VARCHAR2
en réel TIMESTAMP
. En supposant qu'il n'y a pas d'autres utilisateurs pour ce champ, à l'exception de votre code, vous pouvez convertir cdate
en horodatage comme suit:
BEGIN TRANSACTION;
-- add new temp field tdate:
ALTER TABLE mytable ADD tdate TIMESTAMP;
-- save cdate to tdate while converting it:
UPDATE mytable SET tdate = to_date(cdate, 'YYYY-MM-DD HH24:MI:SS');
-- you may want to check contents of tdate before next step!!!
-- drop old field
ALTER TABLE mytable DROP COLUMN cdate;
-- rename tdate to cdate:
ALTER TABLE mytable RENAME COLUMN tdate TO cdate;
COMMIT;
essayez ce type de format:
SELECT to_char(sysdate,'dd-mm-rrrr') FROM dual
Convertissez l'horodatage en date comme mentionné ci-dessous, cela fonctionnera à coup sûr -
select TO_DATE(TO_CHAR(TO_TIMESTAMP ('2015-04-15 18:00:22.000', 'YYYY-MM-DD HH24:MI:SS.FF'),'MM/DD/YYYY HH24:MI:SS'),'MM/DD/YYYY HH24:MI:SS') dt from dual
Si vous voulez que la valeur de votre colonne timestamp revienne sous forme de type de date, utilisez quelque chose comme ceci:
select trunc(my_timestamp_column,'dd') as my_date_column from my_table;
Ce format a fonctionné pour moi, pour le format de date mentionné, à savoir MM/DD/YYYY
SELECT to_char(query_date,'MM/DD/YYYY') as query_date
FROM QMS_INVOICE_TABLE;