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

HyperFileSQL Discussion :

Différence entre 2 dates


Sujet :

HyperFileSQL

  1. #1
    Membre habitué
    Inscrit en
    Juin 2009
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 346
    Points : 163
    Points
    163
    Par défaut Différence entre 2 dates
    Salut à vous les mordus du Sql !

    Je n'ai pas réussi à trouver total bonheur dans les autres discutes sur ce sujet alors je me permets de créer un topic, voici mon problème :

    Je dois effectuer la différence entre 2 dates :

    DATE_SINISTRE - DATE_ACHAT_VEHICULE.

    Les champs sont de forme : aaaammjj. Existe-t-il une fonction miracle (je suis sous Hyperfile (qui est très très mauvais mais ce n'est pas vraiment de ma faute !àà.

    Les champs sont donc des chaines de caractères dirons-nous, les soustraire ne serait pas du tout correct.

    Si quelqu'un a une solution...

    Eh bien vous feriez un gars content

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Quelle que soit l'opération que l'on désire effectuer sur une date, il faut qu'elle soit dans le bon type de donnée, soit le type DATE.
    dans ton cas, il faut trouver une fonction qui convertisse tes chaînes en dates avant de pouvoir effectuer la différence.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre habitué
    Inscrit en
    Juin 2009
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 346
    Points : 163
    Points
    163
    Par défaut
    Je me sens un peu couillon car je viens de consulter le dictionnaire de la base de données et dans la colonne "TYPE", il y a : Booléen, Chaîne, Monétaire, Date... et il se trouve que DATE_EVENEMENT et DATE_ACHAT_VEHICULE sont bien des dates(aaaammjj) et je ne sais pas comment les soustraire.

    J'ai pourtant cherché (sur d'autres topics ils parlaient de DIFF(date1,date2) ou DATEDIFF(date1,date2)... mais ces fonctions miracles ne fonctionnent pas ^^

    Amicalement,

    Eric.

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    19 647
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 19 647
    Points : 32 889
    Points
    32 889
    Par défaut
    Tu as regardé le format demandé par ces fonctions ?

  5. #5
    Membre habitué
    Inscrit en
    Juin 2009
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 346
    Points : 163
    Points
    163
    Par défaut
    Je détaille (avec mon niveau car j'apprends le SQL depuis 1 mois) :

    Il y a un dictionnaire de champs dans lequel je regarde ce qui est monétaire, chaine, date, booléen...

    mes 2 dates sont notées : date(aaaammjj)

    lorsque je fais une requête je dois taper WHERE DATE='20090610' par exemple et lorsque le résultat s'affiche il est sous la forme : 10/06/2009

    Information qui peut vout être utile :
    si DATE_EVENEMENT = 28/05/2009
    et DATE_ACHAT_VEHICULE = 04/12/2007
    alors
    DATE_EVENEMENT + DATE_ACHAT_VEHICULE = 2009052820071204
    DATE_EVENEMENT - DATE_ACHAT_VEHICULE = 00:00 S
    DATE_EVENEMENT * DATE_ACHAT_VEHICULE = 0,00
    DATE_EVENEMENT / DATE_ACHAT_VEHICULE = 0,00

    Moi je voudrais DATE_EVENEMENT - DATE_ACHAT_VEHICULE = un nombre d'années car ces dates sont assez lointaines.
    Par ailleurs je voudrais par exemple : DATE_REPARATION - DATE_EVENEMENT = un nombre de jours car les délais sont assez courts.

    Si je peux vous apporter d'autres précisions pour que vous puissiez m'aider... je me tiens à votre disposition !

    Eric.

    Et en fait je ne sais même pas si sous HyperFile il y a des fonctions comme DATEDIFF... bref s'il y avait une fonction magique je serais preneur !

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    19 647
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 19 647
    Points : 32 889
    Points
    32 889
    Par défaut
    Hyper File est un moteur de base de données pas un langage, les fonctions sont dans WinDev.
    Fonctions W-Langage, fonctions SQL, etc. (cf l'aide)

  7. #7
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 679
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 679
    Points : 954
    Points
    954
    Par défaut
    en effet il te suffit tout simplement de jetter un coup d'oeil dans l'aide et tu as la foction suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <Résultat> = DateDifférence(<Date de début>, <Date de fin>)
    <Date de début>, <Date de fin> doivent être au format AAAAMMJJ (AAAA correspond à l'année, MM au mois et JJ au jour).

    Maintenant si tu veux convertir effectivement au format AAAAMMJJ
    toujours dans l'aide tu as la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <Résultat> = ChaîneVersDate(<Date> [, <Format>])
    Tu verras à quoi resemble <Format> dans l'aide.
    Il ne faut pas aussi oublier que Hyper File stock au format AAAAMMJJ
    Maintenant si DATE_EVENEMENT et DATE_ACHAT_VEHICULE sont saisies (champ de saisie) ou fixe (constante) tu as les fonctions qu'il faut
    Bon courage

  8. #8
    Membre habitué
    Inscrit en
    Juin 2009
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 346
    Points : 163
    Points
    163
    Par défaut
    Bonjour à vous,

    désolé j'ai un peu de mal (je débute le SQL pour un stage...)

    Si je suis bien votre mode d'emploi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT DATE_EVENEMENT,DATE_MISE_CIRCULATION,DateDifférence(DATE_MISE_CIRCULATION, DATE_EVENEMENT)
    FROM DOSSIERS.FIC
    devrait fonctionner... or j'ai ceci :

    Initialisation de la requête impossible
    La procédure stockée <DateDifférence> n'a pas été trouvée.

    Même sans l'accent cela ne donne rien.

    Pourtant mes dates sont bien de la forme AAAAMMJJ

    Je suis dans l'impasse.

  9. #9
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 679
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 679
    Points : 954
    Points
    954
    Par défaut
    Citation Envoyé par Guardian Voir le message
    Hyper File est un moteur de base de données pas un langage, les fonctions sont dans WinDev.
    Fonctions W-Langage, fonctions SQL, etc. (cf l'aide)
    en effet faut pas confondre le sql et les fonctions du W-langage, dans mon intervention je parlais du W-langage.

    SELECT DATE_EVENEMENT,DATE_MISE_CIRCULATION,DateDifférence(DATE_MISE_CIRCULATION, DATE_EVENEMENT)FROM DOSSIERS.FIC
    je ne sais pas si dans le sql de Hyperfile cette fonction existe ! mais par contre dans le W-langage elle existe.

  10. #10
    Membre habitué
    Inscrit en
    Juin 2009
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 346
    Points : 163
    Points
    163
    Par défaut
    Pour être franc je ne comprends pas trop.

    En effet, non, votre code ne fonctionne pas car la fonction n'est pas prise en charge. J'ai abandonné tout espoir qu'il se passe un miracle et que j'arrive enfin à mes fins.

    Celà dit pour être un peu moins ignorant, quelle est la différence entre HyperFileSQL et les fonctions W-Langage ?

    HyperFile est créé par Windev alors pourquoi les fonctions W-Langage ne fonctionnent-elles pas automatiquement avec HyperFile ?

    Ai-je moyen moi de rajouter une fonction dans HyperFile pour que je puisse calculer le délai entre 2 dates ? En rajoutant une bibliothèque de fonctions par exemple...

    Ce HyperFile comment sérieusement à me gonfler

    Tout le monde arrive à faire plein de choses en SQL et avec mon HyperFile rien ne fonctionne jamais...

  11. #11
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mars 2002
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2002
    Messages : 899
    Points : 1 100
    Points
    1 100
    Par défaut
    Tu débutes en sql depuis un mois et tu sais déjà que HyperFile est mauvais ?
    Tentes donc la même requête en précédant les fonctions HyperFile par "WL.".
    Vérifies l'aide sur WL., particulièrement la section "Utiliser des fonctions WLangage dans des requêtes SQL pour HyperFileSQL", ça te sera utile.

Discussions similaires

  1. différence entre 2 date
    Par tounsi dans le forum Oracle
    Réponses: 15
    Dernier message: 03/01/2006, 15h06
  2. [VBA-E] Différence entre 2 dates
    Par ptitsoleil87 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 21/12/2005, 13h23
  3. différence entre 2 dates
    Par MANU_2 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 12/09/2005, 16h30
  4. Différence entre deux dates
    Par pittzz dans le forum Oracle
    Réponses: 5
    Dernier message: 18/07/2005, 12h24
  5. Comment obtenir la différence entre deux dates ?
    Par jbat dans le forum Langage
    Réponses: 4
    Dernier message: 02/06/2005, 09h34

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