IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

soustraction seconde à une date


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 2
    Par défaut soustraction seconde à une date
    Bonjour,

    Je voudrais faire la différence entre la date systeme avec les fractions de secondes et un nombre de seconde, en l'occurrence 10
    J'ai fait cette requete( extrait) mais cela ne fonctionne pas:
    WHERE ACT_RECEIVE_DATETIME>
    to_date(to_char(SYSTIMESTAMP,'YYYYMMDDHH24MISSFF') - 10,'YYYYMMDDHH24MISSFF') ;
    J'ai cherché et regardé dans la doc oracle, mais je ne trouve pas grand chose et je ne suis pas un spécialiste. Quelqu'un aurait une idée ?

    Merci

  2. #2
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    c'est pas dans la faq ça ?

    Bref, une différence de date te donne un nb de jour.
    Tu as 24 h/j, 60 min/h, 60s/min

    Donc pour avoir 10 sec en moins : date - 10 * 1/24/60/60

  3. #3
    Membre expérimenté Avatar de Loyd1974
    Profil pro
    Inscrit en
    Août 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 176
    Par défaut
    Citation Envoyé par McM Voir le message
    c'est pas dans la faq ça ?

    Bref, une différence de date te donne un nb de jour.
    Tu as 24 h/j, 60 min/h, 60s/min

    Donc pour avoir 10 sec en moins : date - 10 * 1/24/60/60
    Petite précision, quand on fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT SYSTIMESTAMP - 10/(24*60*60) FROM DUAL
    J'ai l'impression qu'on perd la précision au niveau de la fraction de seconde. Donc, si on lance la requête à l'instant où la fraction vaut 90, par exemple à 15s90, on aura pas 5s90 mais 5s.
    Il doit y'avoir un moyen de conserver la précision, mais comme ça, cela ne me dit rien

  4. #4
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT SYSTIMESTAMP, 
    	to_timestamp(TO_CHAR(SYSTIMESTAMP - 10/24/60/60, 'DD/MM/RRRR HH24:MI:SS') 
    	|| TO_CHAR(SYSTIMESTAMP, 'FF6'), 
    		'DD/MM/RRRR HH24:MI:SSFF6') AS time2
    FROM DUAL
     
    SYSTIMESTAMP				TIME2
    08/11/2007 10:12:02,064045 +01:00	08/11/2007 10:11:52,064045000

  5. #5
    Membre expérimenté Avatar de Loyd1974
    Profil pro
    Inscrit en
    Août 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 176
    Par défaut
    Citation Envoyé par McM Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT SYSTIMESTAMP, 
        to_timestamp(TO_CHAR(SYSTIMESTAMP - 10/24/60/60, 'DD/MM/RRRR HH24:MI:SS') 
        || TO_CHAR(SYSTIMESTAMP, 'FF6'), 
            'DD/MM/RRRR HH24:MI:SSFF6') AS time2
    FROM DUAL
     
    SYSTIMESTAMP                TIME2
    08/11/2007 10:12:02,064045 +01:00    08/11/2007 10:11:52,064045000
    bravo !
    C'était tout bête en fait, et je cherchais un truc plus compliqué, je me mettrais des baffes parfois

  6. #6
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    Citation Envoyé par Loyd1974 Voir le message
    Petite précision, quand on fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT SYSTIMESTAMP - 10/(24*60*60) FROM DUAL
    J'ai l'impression qu'on perd la précision au niveau de la fraction de seconde. Donc, si on lance la requête à l'instant où la fraction vaut 90, par exemple à 15s90, on aura pas 5s90 mais 5s.
    Il doit y'avoir un moyen de conserver la précision, mais comme ça, cela ne me dit rien
    c'est juste, il vaut mieux employer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT SYSTIMESTAMP - INTERVAL '10' SECOND FROM DUAL;

  7. #7
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Raaaahhhhh...
    J'ai tenté le INTERVAL() et ça ne marchait pas, j'ai pas creusé..

  8. #8
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    si tu employes une variable je conseille plutôt numtodsinterval

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select 
       current_timestamp, 
       current_timestamp+numtodsinterval(:n,'SECOND') 
    from dual;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Soustraction sur une date
    Par Kel-T dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 01/10/2011, 16h01
  2. ajouter des secondes à une date (windev9)
    Par edzodzinam dans le forum WinDev
    Réponses: 3
    Dernier message: 31/01/2008, 14h43
  3. retirer une seconde à une date
    Par besco dans le forum SQL
    Réponses: 1
    Dernier message: 28/09/2007, 10h40
  4. Soustraction d'année à une date
    Par spirou33 dans le forum Access
    Réponses: 2
    Dernier message: 09/01/2006, 13h30
  5. convertir une date en seconde
    Par svil dans le forum Langage
    Réponses: 5
    Dernier message: 05/11/2005, 22h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo