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

SQLite Discussion :

Comment faire une requête sur des intervalles de temps ?


Sujet :

SQLite

  1. #1
    Invité
    Invité(e)
    Par défaut Comment faire une requête sur des intervalles de temps ?
    Bonjour

    J ai des cotations boursières dans une base de données.
    Je souhaite pouvoir extraire les données suivant un intervalle de temps régulier, par exemple toutes les 7 minutes.
    Le problème est que le marché ferme du vendredi 23h30 au dimanche 23h30.
    Donc dans le cas d un intervalle de 7 minutes, si je commence l'extraction le vendredi à 23h00, j aurais les minutes 7,14,21,28 puis le dimanche 23h30 ce qui fera que ma dernière extraction ne comptera que 2 minutes de 23h28 à 23h30 le vendredi.
    J aimerais donc savoir s il est possible de faire en sorte d extraire, dans ce cas précis, les minutes 7,14,21,21... 35,42 etc afin que le contenu de toutes les extractions soit bien de 7 minutes pleines.

    Merci pour votre aide et vos conseils

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 037
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    avec un autre SGBD j'aurais parlé de CTE récursive mais avec SQLite je sais pas si cette possibilté existe (et cela dépend peut-être de la version)
    Ah, si, ça existe

    Je n'ai pas le temps d'écire ce genre de code maintenant (je reviendrai) mais donner la structure de la table à interroger aiderait

    [edit] De retour, ce n'est pas la panacée encore, juste un essai de cte recursive
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    WITH RECURSIVE 
      DATES (ADATE ) AS ( 
        SELECT datetime('NOW','start of day')  -- palacer par un paramètre :debut 
        UNION ALL 
        SELECT datetime(ADATE,'+7 minutes') FROM DATES  -- remplacer '+7 minutes' par un paramètre :interval  
         WHERE ADATE < DATE('now','start of day','+1 day') -- remplacer par un paramètre :fin
      )
    SELECT D.ADATE 
     FROM DATES D -- LEFT JOIN COURS C ON C.DATECOURS=D.ADATE
    encore incorrecte (un intervalle de trop à la fin : ADATE 2022-01-15 00:02:00)

    plus juste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    WITH RECURSIVE 
      DATES (ADATE ) AS ( 
        SELECT :debut
        UNION ALL 
        SELECT datetime(ADATE,:intervalle) FROM DATES 
         WHERE DateTime(ADATE,:intervalle) < :fin
      )
    SELECT * FROM DATES
    la complication reste maintenant au niveau de la jointure, je présume (je n'aime pas le faire mais ..) que durant la période de fermeture le cours ne bouge pas et qu'il faudrait donc récupérer la valeur à la cloture le vendredi
    or la jointure donnera une valeur = null (ou 0 si on fait un COALESCE(VALEUR,0). Hélas, SQLite ne proposant pas de procedure stokée, je ne vois pas comment bidouiller ça
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 379
    Points
    20 379
    Par défaut
    Citation Envoyé par AbsoluteRooky Voir le message
    afin que le contenu de toutes les extractions soit bien de 7 minutes pleines.
    et en utilisant la fonction modulo 7 qu'esse ça donne ?

Discussions similaires

  1. Réponses: 22
    Dernier message: 10/07/2011, 17h49
  2. Comment faire une requête sur un intervalle
    Par niamo dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 31/05/2010, 10h49
  3. Réponses: 3
    Dernier message: 11/10/2008, 13h32
  4. [BDE] Comment faire une requête sur 2 Ttables ?
    Par dim07 dans le forum Bases de données
    Réponses: 2
    Dernier message: 02/12/2006, 12h15
  5. Réponses: 1
    Dernier message: 09/11/2006, 12h08

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