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

Requêtes MySQL Discussion :

Syntaxe MySQL venant d'Oracle


Sujet :

Requêtes MySQL

  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Novembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2014
    Messages : 3
    Par défaut Syntaxe MySQL venant d'Oracle
    Bonjour,

    A titre professionnel je dois mettre un outil en place (des données à ramener dans des tableaux) et je suis à 48h de devoir présenter quelque chose et pour l'heure je suis sans grand résultat.

    L'outil a été développé sous Oracle par une société tiers et chez nous, nous sommes en MySQL. Ne m'en demandez pas plus, je n'y connais pas du tout dans tout ce qui touche aux bases de données.

    Alors je jette une bouteille à la mer en quelque sorte, et vous demande si par hasard vous pourriez me corriger les conditions issus de requêtes suivantes (cela correspond à 3 conditions pour 3 requêtes différentes) :

    DATE_HEURE_DE_DEBUT >= to_date(sysdate-16,'dd/mm/yy')

    DATE_MODIFICATION >= to_date(sysdate-9,'dd/mm/yy')

    ACTIVITEMESUREE_ID in (SELECT ACTIVITEMESUREE_ID FROM RH_ACTIVITE_MESUREE_0741 WHERE DATE_HEURE_DE_DEBUT >= to_date(sysdate-16,'dd/mm/yy'))

    En fait tout cela est du "chinois" pour moi mais après quelques recherche sur le net tant bien que mal, il me semble que lorsque j'execute ces requêtes (requêtes qui s'exécutent une fois par jour pour récupérer des données) le pbm vient du fait que "to_date" n'est pas parlant pour MySQL. Je crois qu'il faudrait écrire "SRT_TO_DATE" et mettre des "%d" au lieu de DD par exemple.

    Voici un exemple de message d'erreur : FUNCTION tbel.to_date does not existdelete from RH_VALEUR_MESURE_0741 where ACTIVITEMESUREE_ID in (SELECT ACTIVITEMESUREE_ID FROM RH_ACTIVITE_MESUREE_0741 WHERE DATE_HEURE_DE_DEBUT >= to_date(sysdate-16,'dd/mm/yy'))

    Mais même en corrigant cela, MySQL me renvoit une erreur avec le terme "sysdate-16".

    Le principe normalement est de récupérer des infos d'une autre base de donnée tous les jours et basé sur les 16 derniers jours (les données pouvant être corrigés/rectifiés par des utilisateurs rétroactivement pendant 16 jours)

    Donc je vous remercie par avance, si il est possible de tester une nouvelle condition plus compréhensible pour MySQL. Car malheureusement je ne pourrais pas vous en donner plus en terme d'information.

    Un grand merci par avance.

    Cordialement.

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DATE_HEURE_DE_DEBUT >= to_date(sysdate-16,'dd/mm/yy')
     
    DATE_MODIFICATION >= to_date(sysdate-9,'dd/mm/yy')
    Je considère que c'est une mauvaise habitude, chez Oracle, d'enregistrer des dates sous n'importe quel format, ce qui oblige à utiliser partout l'une et/ou l'autre commande TO_DATE TO_CHAR.
    En MySQL, on utilise le format de colonne DATE, DATETIME, ou TIMESTAMP et c'est plus simple car n'a besoin de convertir que... quand on en a vraiment besoin !

    Le standard SQL pour sysdate est CURRENT_DATE, qui devrait fonctionner normalement dans tous les SGBD.
    D'où l'intérêt d'écrire ses requêtes autant que possible en SQL standard plutôt que dans le dialecte de son SGBD.

    Si les dates stockées dans les colonnes DATE_HEURE_DE_DEBUT et DATE_MODIFICATION sont en format DATE standard 'yyyy-mm-dd' ou DATETIME standard 'yyyy-mm-dd hh:mm:ss', alors pas besoin de convertir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DATE_HEURE_DE_DEBUT >= DATE_SUB(CURRENT_DATE, INTERVAL 16 DAY)
    DATE_MODIFICATION >= DATE_SUB(CURRENT_DATE, INTERVAL 9 DAY)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ACTIVITEMESUREE_ID in (SELECT ACTIVITEMESUREE_ID FROM RH_ACTIVITE_MESUREE_0741 WHERE DATE_HEURE_DE_DEBUT >= to_date(sysdate-16,'dd/mm/yy'))
    Pour cette dernière partie de requête, une jointure serait peut-être préférable mais bon...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ACTIVITEMESUREE_ID in (SELECT ACTIVITEMESUREE_ID FROM RH_ACTIVITE_MESUREE_0741 WHERE DATE_HEURE_DE_DEBUT >= DATE_SUB(CURRENT_DATE, INTERVAL 16 DAY))
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

Discussions similaires

  1. mettre à jour mysql à partir de oracle
    Par medonline dans le forum Outils
    Réponses: 4
    Dernier message: 16/10/2006, 13h34
  2. Probléme de Syntax MySQL
    Par dunbar dans le forum Requêtes
    Réponses: 3
    Dernier message: 16/08/2006, 01h26
  3. Réponses: 14
    Dernier message: 08/08/2006, 11h31
  4. Erreur de syntaxe MySQL
    Par lynal dans le forum Requêtes
    Réponses: 9
    Dernier message: 30/05/2006, 10h31

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