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

Modules Perl Discussion :

[Débutant] Encore des dates


Sujet :

Modules Perl

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2002
    Messages : 8
    Points : 7
    Points
    7
    Par défaut [Débutant] Encore des dates
    Bonjour,

    Je suis en train de bosser sur un petit rapport qui se connecte à une base Mysql.

    Ce script sera exécuté tous les dimanches.

    Ce rapport doit générer des états jour par jour d'un dimanche à un autre dimanche.

    Mon select SQL doit donc être exécuté 7 fois avec une clause where correspondant à la date du jour.

    Ma question, c'est comment je peux récupérer les 7 dernières dates dans des variables disctinctes à partir de la date d'exécution pour pouvoir ensuite les intégrer dans une boucle.

    La date est définie comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    use POSIX qw(strftime);
    $now_string = strftime "%c %h", localtime;
    Ensuite je vai inclure ce select dans une boucle, et la fameuse date sera dans la clause where ($DATEOFTHEDAY):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $sndtocaisse_sql = $dbh->prepare
    ("select count(*) from transport
       where receiverid=$idcaisse
         and statustypid=100
         and LEFT(SUBSTRING_INDEX(filename, '.', -2), 6) = $DATEOFTHEDAY");
     $sndtocaisse_sql->execute;
     while( ($sndtocaisse) =$sndtocaisse_sql->fetchrow()

  2. #2
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Bonjour,

    Je ne suis pas certaine d'avoir tout compris.
    Tous les dimanches tu vas exécuter ce script qui va aller interroger 7 fois ta DB pour les 7 jours de la semaine. Est-ce bien ça?
    Tu parles de récupérer les 7 dernières dates...mais tu veux les récupérer dans ta DB? Ou juste prendre la date du jour et à partir de celle-ci retrouver les dates des 6 jours précédents?

    Pour ce qui est d'interroger MySQL voici comment je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    use Time::localtime;
     
    my $Annee = localtime->year() + 1900;
    my $Mois = localtime->mon() + 1;
    my $Jour = localtime->mday();
     
     
    my $Date = sprintf("%04d",$Annee)."-".sprintf("%02d",$Mois)."-".sprintf("%02d",$Jour);
    Cela correspond à la date du jour en format SQL.




    DATE_ADD(date,INTERVAL expr type), DATE_SUB(date,INTERVAL expr type)

    Ces fonctions effectuent des calculs arithmétiques sur les dates.

    Depuis MySQL 3.23, INTERVAL expr type est autorisé des deux cotés de l'opérateur + si l'expression de l'autre coté est de type DATE ou DATETIME. Pour l'opérateur -, INTERVAL expr type est autorisé uniquement du coté droit, car on ne peut pas soustraire une date d'un intervalle (voir les exemples ci-dessous).

    date est une valeur de type DATETIME ou DATE qui spécifie la date de début. expr est une expression qui spécifie une valeur d'intervalle à ajouter ou soustraire de la date initiale. expr est une chaîne : elle peut commencer avec ‘-’ pour les intervalles négatifs. type est un mot-clé, indiquant comment l'expression doit être interprétée.


    http://dev.mysql.com/doc/refman/5.0/...functions.html


    my $sql = "SELECT....FROM transport WHERE Date = (SELECT DISTINCT DATE_SUB($Date, INTERVAL 6 DAY))";
    my $sth = $DBconnect->prepare($sql) or print "erreur de preparation SQL\n";
    $sth->execute or die "Could not execute SQL statement ... maybe invalid?";
    et de même avec 5, 4, 3, 2, 1 jours


    J'espère que cela t'aidera un peu.

    Jasmine,
    -- Jasmine --

Discussions similaires

  1. [Débutant] Manipuler des Date/Time
    Par Heri75011 dans le forum Prolog
    Réponses: 7
    Dernier message: 25/03/2014, 14h48
  2. [AC-2003] [Débutant] Gestion des dates
    Par KiRiL38 dans le forum IHM
    Réponses: 6
    Dernier message: 12/11/2009, 14h40
  3. [Débutante] Manipuler des dates
    Par sab_etudianteBTS dans le forum Langage
    Réponses: 3
    Dernier message: 04/05/2007, 17h23
  4. [WD9] [Débutante] Manipulation des dates
    Par Ando Nelly dans le forum WinDev
    Réponses: 2
    Dernier message: 19/04/2006, 08h24
  5. probleme de date (toujours et encore des dates)
    Par Yannesco dans le forum SQL
    Réponses: 3
    Dernier message: 02/02/2004, 19h04

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