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 15/10/2007, 18h34   #1
Rédacteur
 
Avatar de DarkVader
 
Homme
Développeur informatique
Inscription : mai 2002
Messages : 1 821
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2002
Messages : 1 821
Points : 2 402
Points : 2 402
Par défaut Erreur sur l'évaluation d'une durée

Bonjour,
Voilà qui est probablement basique mais je ne m'explique pas le comportement suivant :
j'exécute une requete retournant la différence entre la date et heure courante avec un champ timestamp enregistré
or le résultat ne correspond pas aux valeurs attendu !

Code :
1
2
SELECT Connection_Deny.DenyDate, Now(), Now()-Connection_Deny.DenyDate
FROM `Connection_Deny`
Le résultat

En colonne 3 : le résultat de la requête
en 4 le résultat attendu !

En résumé comment obtenir la différence de 2 datetimes sous forme de secondes ?
__________________
« Heureux soient les fêlés, car ils laisseront passer la lumière. »

Pensez aux liens
Rechercher - Google - Google Labs - AllApi
et avant de poster : « A lire » , « Tutoriel sur le déboguage »
DarkVader est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2007, 18h52   #2
Rédacteur
 
Avatar de DarkVader
 
Homme
Développeur informatique
Inscription : mai 2002
Messages : 1 821
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2002
Messages : 1 821
Points : 2 402
Points : 2 402
Désolé,
j'ai finallement trouvé (peu de temps après avoir posé ma question ) .

Code :
1
2
SELECT Connection_Deny.DenyDate, Now( ) , timestampdiff(SECOND,Connection_Deny.DenyDate,Now( )) AS DIFF 
FROM `Connection_Deny`
__________________
« Heureux soient les fêlés, car ils laisseront passer la lumière. »

Pensez aux liens
Rechercher - Google - Google Labs - AllApi
et avant de poster : « A lire » , « Tutoriel sur le déboguage »
DarkVader est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2007, 21h33   #3
Rédacteur
 
Avatar de DarkVader
 
Homme
Développeur informatique
Inscription : mai 2002
Messages : 1 821
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2002
Messages : 1 821
Points : 2 402
Points : 2 402
Je viens de constater qu'il s'agit d'une fonction MySQL 5.
Quelle est l'alternative avec les versions précédentes ?
__________________
« Heureux soient les fêlés, car ils laisseront passer la lumière. »

Pensez aux liens
Rechercher - Google - Google Labs - AllApi
et avant de poster : « A lire » , « Tutoriel sur le déboguage »
DarkVader est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2007, 09h47   #4
Membre éprouvé
 
Avatar de nounetmasque
 
Inscription : janvier 2003
Messages : 491
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 491
Points : 488
Points : 488
Si ton champ Connection_Deny.DenyDate est de type date, tu peux normalement arriver au même résultat avec les fonction DATEDIFF et DATE_FORMAT.
Ces deux fonctions sont disponibles depuis MySQL 4.1.1
__________________
"Dieu reste muet, si seulement nous pouvions convaincre l'être humain d'en faire autant."
nounetmasque est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2007, 09h55   #5
Rédacteur
 
Avatar de DarkVader
 
Homme
Développeur informatique
Inscription : mai 2002
Messages : 1 821
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2002
Messages : 1 821
Points : 2 402
Points : 2 402
Il est de type Timestamp et la valeur par défaut (Current_Timestamp) est attribuée automatiquement à l'ajout d'un nouvel enregistrement.
__________________
« Heureux soient les fêlés, car ils laisseront passer la lumière. »

Pensez aux liens
Rechercher - Google - Google Labs - AllApi
et avant de poster : « A lire » , « Tutoriel sur le déboguage »
DarkVader est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2007, 10h18   #6
Membre éprouvé
 
Avatar de nounetmasque
 
Inscription : janvier 2003
Messages : 491
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 491
Points : 488
Points : 488
Et avec l'utilisation de la fonction SEC_TO_TIME pour convertir tes timestamp en date...
__________________
"Dieu reste muet, si seulement nous pouvions convaincre l'être humain d'en faire autant."
nounetmasque est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2007, 11h14   #7
Rédacteur
 
Avatar de DarkVader
 
Homme
Développeur informatique
Inscription : mai 2002
Messages : 1 821
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2002
Messages : 1 821
Points : 2 402
Points : 2 402
Non,
avec
Code :
1
2
SELECT Connection_Deny.DenyDate, Now( ) , SEC_TO_TIME(Now()-Connection_Deny.DenyDate) AS DIFF 
FROM `Connection_Deny`
on obtient
DenyDate Now( ) DIFF
8/10/07 14:30:15 16/10/07 11:06:09 2213:13:14
8/10/07 14:29:31 16/10/07 11:06:09 2213:14:38
8/10/07 14:27:53 16/10/07 11:06:09 2213:17:36
8/10/07 14:25:59 16/10/07 11:06:09 2213:20:50
8/10/07 14:25:04 16/10/07 11:06:09 2213:21:45
8/10/07 11:45:41 16/10/07 11:06:09 2221:07:48
8/10/07 11:45:37 16/10/07 11:06:09 2221:07:52

désolé pour la mise en forme
__________________
« Heureux soient les fêlés, car ils laisseront passer la lumière. »

Pensez aux liens
Rechercher - Google - Google Labs - AllApi
et avant de poster : « A lire » , « Tutoriel sur le déboguage »
DarkVader est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2007, 11h54   #8
Rédacteur
 
Avatar de DarkVader
 
Homme
Développeur informatique
Inscription : mai 2002
Messages : 1 821
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2002
Messages : 1 821
Points : 2 402
Points : 2 402
Ce que je ne m'explique pas c'est q'un test d'évaluation concernant des temps d'exécutions de requêtes via un script php avec microtime()
fourni le même type de décallage soit un résultat très supérieur à la réalité !
Serait-ce du au serveur OVH ?
__________________
« Heureux soient les fêlés, car ils laisseront passer la lumière. »

Pensez aux liens
Rechercher - Google - Google Labs - AllApi
et avant de poster : « A lire » , « Tutoriel sur le déboguage »
DarkVader 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 22h32.


 
 
 
 
Partenaires

Hébergement Web