web-dev-qa-db-fra.com

extraire la date uniquement à partir de l'horodatage donné dans Oracle SQL

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.

14
kumarprd

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

20
Fernando.

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').

Démo SQLFiddle

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 cdateVARCHAR2 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;

Demo SQLFiddle

9
mvp

essayez ce type de format:

SELECT to_char(sysdate,'dd-mm-rrrr') FROM dual
1
Shailesh

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
1
AB Sikarwar

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;
0
Frank Staheli

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;
0
Tarun Verma