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

Langage SQL Discussion :

Créer une table initialisée avec des lignes pour chaque minutes ?


Sujet :

Langage SQL

  1. #1
    Membre averti
    Avatar de Pierre8r
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 518
    Points : 341
    Points
    341
    Par défaut Créer une table initialisée avec des lignes pour chaque minutes ?
    Bonjour,

    Soit une période quelconque du 5 janvier 2007 au 20 février 2007.

    Soit une table SQL ayant cette définition :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE QUOTES1MN
    (
       DATE TIMESTAMP,
       OPEN DOUBLE,
       HIGH DOUBLE,
       LOW DOUBLE,
       CLOSE DOUBLE,
       VOLUME BIGINT
    )
    ;
    Comment insérer dans cette Table SQL une ligne pour chaque minute de la période du 5 janvier 2007 au 20 février 2007 ?

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut
    Même s'il ne descend pas jusqu'à la minute, lisez cet article concernant la gestion du temps par un ensemble de tables :

    http://sqlpro.developpez.com/cours/gestiontemps/

  3. #3
    Membre averti
    Avatar de Pierre8r
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 518
    Points : 341
    Points
    341
    Par défaut
    Citation Envoyé par vmolines Voir le message
    Même s'il ne descend pas jusqu'à la minute, lisez cet article concernant la gestion du temps par un ensemble de tables :

    http://sqlpro.developpez.com/cours/gestiontemps/
    Je suis allé voire l'article cité.
    ça m'a bien refroidi sur la possibilité de réaliser aisément une telle initialisation.
    S'il doit y avoir des conditions et des boucles je me pose la question de savoir si je n'ai pas intérêt de passer par Java pour créer ces tables.

    Exemple de code vu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    -- le calendrier est déjà rempli et l'année à créer si situe
    -- avant les années déjà créées
    IF @AN < @MIN_AN
    BEGIN
       WHILE @AN < @MIN_AN
       BEGIN
          EXEC SP_PLN_CREATE_ONE_YEAR @AN
          SET @AN = @AN + 1
       END
       RETURN
    END

  4. #4
    J1
    J1 est déconnecté
    Membre averti Avatar de J1
    Inscrit en
    Mai 2004
    Messages
    321
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 321
    Points : 335
    Points
    335
    Par défaut
    Bonjour,

    tu n'indiques pas ton SGBD, voici une solution pour Access.

    Soit 3 tables :

    table tblJours
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    strJour
    ----------
    05/01/2007
    06/01/2007
    ...
    20/02/2007
    table tblHeures
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    strHeure
    ----------
    0
    1
    ...
    23
    table tblMinutes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    strMinute
    ----------
    0
    1
    ...
    59

    strJour, strHeure et strMinute sont de type caractère.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    INSERT INTO QUOTES1MN ([DATE])
    SELECT CDate(J.strJour & ' ' & H.strHeure & ':' & strMinute)
    FROM tblJours J, tblHeures H, tblMinutes M
    Pour que tu puisses adapter l'idée à ton SGBD, je te résume le principe : il s'agit de faire le produit cartésien des 3 tables afin d'obtenir tous les ensembles {jour, heure, minute} possibles.
    L'opérateur de concaténation & sera éventuellement à remplacer par celui utilisé par ton SGBD, tout comme la fonction de conversion en date (ici, CDate). A noter que l'usage de la fonction de conversion est de toute façon facultatif si ton SGBD effectue une conversion implicite.

  5. #5
    Membre averti
    Avatar de Pierre8r
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 518
    Points : 341
    Points
    341
    Par défaut
    Bonjour J1,

    tu n'indiques pas ton SGBD,
    Mon SGDB est H2 :
    http://www.h2database.com/

    J'évite de l'indiquer car sinon ma question est déplacée vers le forum Autres SGDB, ou il y a beaucoup moins de trafic qu'ici.
    Et qu'une réponse pour un autre SGDB peut peut-être me donner une idée.

    D'ailleurs ta réponse me semble applicable avec H2.
    Il existe une fonction
    ParseDateTime(CONCAT(DATE,' ',TIME), 'MM/dd/yyyy HH:mm'),
    que j'ai déjà utilisé ailleurs.
    Petite critique, car j'en veux toujours plus
    ta solution m'oblige à saisir tout les jours que je souhaite générer dans strJour
    Ta solution n'est-elle pas améliorable ?

    J'ai vu dans la doc de H2 cette fonction :

    Fonctions H2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    DATEADD
     
    DATEADD(unitString, addInt, timestamp): timestamp
     
    Adds units to a timestamp. The string indicates the unit. Use negative values to subtract units.
    The following units are supported:
    YY, YEAR, MM, MONTH, DD, DAY, HH, HOUR, MI, MINUTE, SS, SECOND, MS, MILLISECOND.
    Example:
    DATEADD('MONTH', 1, DATE '2001-01-31')
    Merci

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/05/2009, 19h04
  2. Réponses: 5
    Dernier message: 15/04/2009, 15h38
  3. Réponses: 11
    Dernier message: 18/10/2007, 12h49
  4. [JTable] Créer une JTable vide avec des noms de colonnes.
    Par Cyborg289 dans le forum Composants
    Réponses: 2
    Dernier message: 27/09/2005, 15h54

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