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 :

Soustraire une heure à une date


Sujet :

Requêtes MySQL

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Soustraire une heure à une date
    Bonjour à tous,

    Je suis un gros newbie et il y a un problème sur lequel je bute depuis presque 3 jours.

    J'ai un module sur un site prestashop qui me permet d'extraire des données d'ajourd'hui, de la veille ou de la semaine dernière et qui fonctionne très bien, mais ce dont j'aurais besoin, c'est d'extraire des données d'il y a quelques heures, par exemple 14h.

    Voici les lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    //conditon permettant de rajouter les conditions lié au temps
    $temp_query='';
    if ($temps==1){
        $temp_query=' and '._DB_PREFIX_.'orders.date_add like concat(DATE(NOW()),\'%\')';
    }
    if ($temps==2){
        $temp_query=' and '._DB_PREFIX_.'orders.date_add like concat(SUBDATE(DATE(NOW()),1),\'%\')';
    }
    if ($temps==3){
        $temp_query=' and week('._DB_PREFIX_.'orders.date_add) =week(DATE(NOW())) and year('._DB_PREFIX_.'orders.date_add) =year(DATE(NOW()))';
    }
    if ($temps==4){
        $temp_query=' and week('._DB_PREFIX_.'orders.date_add) =week(DATE(NOW()))-1 and year('._DB_PREFIX_.'orders.date_add) =year(DATE(NOW()))';
    }
    if ($temps==5){
        $temp_query=' and Month('._DB_PREFIX_.'orders.date_add) =month(DATE(NOW())) and year('._DB_PREFIX_.'orders.date_add) =year(DATE(NOW()))';
    }
    if ($temps==6){
        $temp_query=' and Month('._DB_PREFIX_.'orders.date_add) =if(month(DATE(NOW()))<>1,month(DATE(NOW()))-1,12) and year('._DB_PREFIX_.'orders.date_add) =if(month(DATE(NOW()))<>1, year(DATE(NOW())), year(DATE(NOW()))-1)';
    }
    if ($temps==7){
        $temp_query=' and year('._DB_PREFIX_.'orders.date_add) =year(DATE(NOW()))';
    }
    if ($temps==8){
        $temp_query=' and year('._DB_PREFIX_.'orders.date_add) =year(DATE(NOW()))-1';
    }
    if ($temps==20){
        //recuperation des champs date
        $temp_query=' and '._DB_PREFIX_.'orders.date_add between \''.$date_start.'\' and \''.$date_stop.'\'';
    }
     
     
    //variable fichier csv
    //$separateur=';';
    $filename=date("YmdHms").'.csv';
    J'ai donc essayé de modifier la 2e ligne qui m'extrait les commandes de la veille. Le problème est que le script fonctionne uniquement pour les unités de temps correspondant à DAY, MONTH, YEAR, mais pas pour HOUR. Dès que je remplace par HOUR, le script ne fonctionne plus. Je pense qu'il y a un problème de format de DATE, mais comme je suis un débutant, je ne sais pas où chercher ...

    Après une centaine de tentatives, voici toute sorte de lignes équivalentes qui fonctionnent sur les unités de temps DAY, MONTH, YEAR, mais ne fonctionnent pas avec HOUR.



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if ($temps==2){
    $temp_query = ' and DATE('._DB_PREFIX_.'orders.date_add) = CURRENT_DATE - INTERVAL 5 DAY';
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if ($temps==2){        
    $temp_query=' and '._DB_PREFIX_.'orders.date_add like concat(DATE_SUB(CURRENT_DATE, INTERVAL 10 DAY),\'%\')';
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if ($temps==2){
    $temp_query=' and '._DB_PREFIX_.'orders.date_add like concat(SUBDATE(DATE(NOW()),1),\'%\')';


    Je m'arrache les cheveux à essayer bêtement toutes les combinaisons possibles, mais je suis à bout.

    Est-ce qu'il y aurait une âme charitable parmi vous ?

    Merci à vous tous,

    Cyril

  2. #2
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    Par défaut
    Si t'as un champ de type DATE, il n'y a que les années, les mois et les jours de stockés, pas les secondes, ni les minutes, ni les heures. Donc impossible de soustraire des heures à une date qui n'en contient pas.

Discussions similaires

  1. [Batch] enlever une heure à la date courante
    Par lokomass dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 17/03/2015, 21h43
  2. Sauvegarde automatique a une heure et date précise sqlServer2008
    Par YasserFlasher dans le forum Développement
    Réponses: 4
    Dernier message: 14/06/2011, 06h51
  3. Programmer une action à une heure définie
    Par BakaOnigiri dans le forum API standards et tierces
    Réponses: 12
    Dernier message: 26/10/2007, 14h21
  4. Lancer une fonction à une heure donnée
    Par marcootz dans le forum C++Builder
    Réponses: 4
    Dernier message: 04/07/2007, 12h01
  5. Exécuter une action à une heure précise
    Par Rhadamanthe59 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 09/02/2006, 23h12

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