Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/04/2006, 10h25   #1
Nouveau Membre du Club
 
Inscription : mai 2005
Messages : 77
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 77
Points : 37
Points : 37
Envoyer un message via MSN à FCDB
Par défaut [résolu]Afficher heure et minute d'un TIME (MySQL)

Dans ma base de donnée, j'ai utilisé un champ de type TIME afin d'enregistrer une heure et des minutes. Je sauve donc des secondes inutilement.

Je veux afficher uniquement les heures et les minutes.

J'ai essayé ça :

Code :
1
2
3
4
5
 
    public FUNCTION getHorraireHM(){
        $format = 'H:i';
         RETURN date($format, mktime($this->horraire . '01:01:2000'));
    }
La variable horraire comporte une copie du champ TIME. Les heures sont correctement retournées mais les minutes affichées ne sont pas celles de la base de données mais celles de l'heure actuelle!!

Si je retourne directement la variable horraire, j'ai les bonnes minutes mais également les secondes qui ne m'intéressent pas.

Merci.
FCDB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2006, 14h48   #2
Nouveau Membre du Club
 
Inscription : mai 2005
Messages : 77
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 77
Points : 37
Points : 37
Envoyer un message via MSN à FCDB
Je cherche toujours en vain, je me permet de remonter le sujet.
FCDB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2006, 16h46   #3
Membre expérimenté
 
Avatar de papyphp
 
Inscription : avril 2005
Messages : 425
Détails du profil
Informations personnelles :
Âge : 62
Localisation : Belgique

Informations professionnelles :
Secteur : Enseignement

Informations forums :
Inscription : avril 2005
Messages : 425
Points : 545
Points : 545
Bonjour,

mktime demande que les paramètres qu'on lui passe soit séparés par des virgules. Tout ce qui n'est pas correct est remis à la date et à l'heure du jour. Ceci explique que les heures sont OK alors que le reste ne l'est pas.

Si this->horraire est un string de la forme hh:mm:ss essaye ceci :

Code :
1
2
$format = 'H:i';
RETURN date($format, mktime(substr($this->horraire,0,2).','.substr($this->horraire,3,2));
ou alors
Code :
1
2
3
$format = 'H:i';
$var=str_replace(':',',',$this->horraire);
RETURN date($format, mktime($var));
Pas testé !!!
__________________
Lu kinze d' awousse, la Vierje arandje û dusbrôle lu timp. Et ce coup ci, elle ne nous a pas ratés
papyphp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2006, 16h54   #4
Membre émérite

 
Avatar de FCYPBA
 
Inscription : novembre 2004
Messages : 735
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : novembre 2004
Messages : 735
Points : 924
Points : 924
Au lieu d'essayer de faire quelque chose en php, regarde plutôt du coté de Mysql.

Dans la doc on voit très bien une fonction qui répondra à tes attentes :
http://dev.mysql.com/doc/refman/4.1/...functions.html

regarde à la fonction DATE_FORMAT


Pierre
FCYPBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2006, 12h16   #5
Nouveau Membre du Club
 
Inscription : mai 2005
Messages : 77
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 77
Points : 37
Points : 37
Envoyer un message via MSN à FCDB
Merci à vous deux. PapyPhp, ça ne change rien...

C'est vrai que d'utiliser mySQL pour récupérer juste les heures et les minutes, c'est plus propre. J'ai donc essayé de faire ça :

Code :
1
2
3
 
SELECT DATE_FORMAT(`n_date`, '%H:%i')
FROM nouvelle;
Ca me retourne 00:00 autant de fois qu'il y a d'enregistrements dans la table nouvelle.

J'ai bien sûr testé au préalable ceci :
Code :
1
2
 
SELECT DATE_FORMAT('1997-10-04 22:23:00', '%H:%i');
et ça, et bien ça retourne 22h23.

Le problème vient du fait que mon champ est de type TIME et pas DATE, c'est pour ça qu'à la base, je voulais faire le "traitement" en php... Donc a priori, il faut ajouter à n_date une année, un moi et un jour bidon mais je ne sais pas faire ça en SQL...

J'aime les ordinateurs...
FCDB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2006, 12h35   #6
Membre expérimenté
 
Avatar de papyphp
 
Inscription : avril 2005
Messages : 425
Détails du profil
Informations personnelles :
Âge : 62
Localisation : Belgique

Informations professionnelles :
Secteur : Enseignement

Informations forums :
Inscription : avril 2005
Messages : 425
Points : 545
Points : 545
Salut,

Dans Mysql il existe aussi une fonction time_format qui utilise la même syntaxe que date_format sauf qu'elle prend un time comme argument.

Voili voila.
__________________
Lu kinze d' awousse, la Vierje arandje û dusbrôle lu timp. Et ce coup ci, elle ne nous a pas ratés
papyphp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2006, 14h08   #7
Nouveau Membre du Club
 
Inscription : mai 2005
Messages : 77
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 77
Points : 37
Points : 37
Envoyer un message via MSN à FCDB
Pourquoi faire simple quand on peut faire compliquer :p, merci beaucoup.
FCDB est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h39.


 
 
 
 
Partenaires

Hébergement Web