Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1580 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  SQL fonction conversion vers date

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

SQL fonction conversion vers date

n°825849
yanooplaz
La vie est belle
Posté le 18-08-2004 à 14:49:19  profilanswer
 

J'ai un calcul à faire sur une date, en sql seulement (c'est pas cool, mais j'ai pas le choix) pour cela je m'abondonne à quelques conversions

Citation :

select to_number(to_char(to_date(DATE_COM,'DD/MM/YY HH24:MI:SS'),'SSSSS'))
from IMPORT_TAXATION_4760
where rownum = 1


 
renvoi 86399 donc c'est cool
 
Le probleme c'est  

Citation :

select to_date(to_number(to_char(to_date(DATE_COM,'DD/MM/YY HH24:MI:SS'),'SSSSS')),'HH24/MI/SS')
from IMPORT_TAXATION_4760
where rownum = 1


 
Il me dit que l'heure doit etre comprise entre 0 et 23.
 
Quelqu'un peut m'aider ?
Merci d'avance.

mood
Publicité
Posté le 18-08-2004 à 14:49:19  profilanswer
 

n°825878
Arjuna
Aircraft Ident.: F-MBSD
Posté le 18-08-2004 à 15:12:07  profilanswer
 

:heink:
 
select to_char(to_date(DATE_COM,'DD/MM/YY HH24:MI:SS'),'HH24/MI/SS')
from IMPORT_TAXATION_4760  
where rownum = 1
 
Ca marche pas ça ?

n°825883
yanooplaz
La vie est belle
Posté le 18-08-2004 à 15:22:03  profilanswer
 

Excuse, c'était pas clair.
Je veux soustaire une durée à une date.
Apres l'avoir passée en seconde, je fait mon calcul : c'est ok.
Mais c'est au moment de la reconversion en format date que ca bloque.
Voila l'ecriture complete :
select to_date(
    to_char(to_date(DATE_COM,'DD/MM/YY HH24:MI:SS'),'sssss')  
  - to_char(to_date(DUREE,'HH24:MI:SS'),'sssss')
    ,'DD/MM/YY HH24:MI:SS')
from IMPORT_TAXATION_4760
where rownum = 1

n°825889
yanooplaz
La vie est belle
Posté le 18-08-2004 à 15:28:09  profilanswer
 

En fait voila, j'ai une date au format 'DD/MM/YY HH24:MI:SS'
(18/08/04 15:25:36) et une durée en 'SSSSS' (112).
Et je veux faire la difference : la date - la durée,
et avoir un format final 'DD/MM/YY HH24:MI:SS'
(18/08/04 15:23:44).
Le tout en SQL. Voila voila  

n°825895
Arjuna
Aircraft Ident.: F-MBSD
Posté le 18-08-2004 à 15:37:35  profilanswer
 

Ca va ça ?
 
select to_char(to_date(to_number(to_char(sysdate, 'SSSSS')) - 500, 'SSSSS'), 'DD/MM/YY HH24:MI:SS') from dual

n°825919
yanooplaz
La vie est belle
Posté le 18-08-2004 à 16:04:32  profilanswer
 

Oui, c'est bon ca.
Mais le probleme c'est qu'on à plus la date.
Mais c'est bon quand meme je vais faire un concat.
Merci.

n°825930
jielbi
Posté le 18-08-2004 à 16:20:14  profilanswer
 

Bonjour.
si je peux me permettre une remarque : si la durée à soustraire est trop importante, on doit passer au jour précédent ce qui n'est pas le cas ici. tout dépend de ce que tu veux...

n°825963
yanooplaz
La vie est belle
Posté le 18-08-2004 à 16:59:28  profilanswer
 

J'ai vu, mais je sais pas trop comment m'y prendre.
Si t'as une idée, je suis preneur.
 
Encore merci pour la reponse de Arjuna.

n°825964
jielbi
Posté le 18-08-2004 à 17:02:20  profilanswer
 

je viens d'essayer ca et ca marche ! heu...j'espère que c'est sous Oracle.... :D  
j'ai pris sysdate à la place de ton champ et j'ai soustrait une durée de 3600secondes (j'ai aussi essayé avec plus...)
Sachant qu'on ne peut avoir plus de 86400 secondes dans une journée :
 
select decode(sign(to_number(to_char(to_date(sysdate,'DD/MM/YYYY HH24:MI:SS'),'SSSSS'))-3600),0,trunc(sysdate),1,to_char(trunc(sysdate),'DD/MM/YYYY')||to_char(to_date(to_number(to_char(to_date(sysdate,'DD/MM/YYYY HH24:MI:SS'),'SSSSS'))-3600,'SSSSS'),'HH24:MI:SS'),to_char(trunc(sysdate)-1,'DD/MM/YYYY')||to_char(to_date(to_number(to_char(to_date(sysdate,'DD/MM/YYYY HH24:MI:SS'),'SSSSS'))-3600+86400,'SSSSS'),'HH24:MI:SS')) from dual;

n°825976
Arjuna
Aircraft Ident.: F-MBSD
Posté le 18-08-2004 à 17:19:41  profilanswer
 

T'as rien de plus compliquer ? :D
 
Je pense qu'on peut s'en tirer d'une façon bien plus simple en récupérant autrechose que SSSSS, mais le nombre de ms depuis le 01/01/1900, normalement Oracle a une fonction qui retourne ça. A partir de là, ça résoud tous les problèmes, à moins que tu gères des données aussi vieilles que ça...

mood
Publicité
Posté le 18-08-2004 à 17:19:41  profilanswer
 

n°825990
yanooplaz
La vie est belle
Posté le 18-08-2004 à 17:50:34  profilanswer
 

Heu, et bien bravo
j'ai compris, et ca marche.
Je pense que je ne l'aurai pas trouvé.
Je connaissais pas "decode", maintenant si.
Merci beaucoup.

n°826484
jielbi
Posté le 19-08-2004 à 09:48:16  profilanswer
 

ouais, y'avait moyen de faire plus simple, mais comme on est parti d'une durée en secondes, j'ai pas trop cherché plus loin.... :D


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  SQL fonction conversion vers date

 

Sujets relatifs
[SQL] Faire un update sur plusieurs critères provenant d'une tablequestion concernant la fonction copy()
Date stockée au format strtotime, comment convertir ?Problème avec un boucle For Each et une fonction recursive
[php]problème avec la fonction logique || [resolu]SQL Access Erreur de Requete
appel des variables php dans une fonction phpGestion de date
[SQL SERVER] - Utiliser une variable locale dans un CURSOR (TSQL)Probléme Datatype image avec SQL server 2000
Plus de sujets relatifs à : SQL fonction conversion vers date


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR