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 27/08/2006, 16h30   #1
Invité de passage
 
Inscription : juillet 2006
Messages : 40
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : juillet 2006
Messages : 40
Points : 0
Points : 0
Envoyer un message via MSN à Pushka07
Par défaut Comment calculer une limite ?

Bonjour,

Je voudrais savoir comment calculer la limite qui est insérer dans la base de données quand je rentre une date et une heure ?

Ex : le 23/07/2006 à 18h30 = 113661400

Avez vous une astuce pour calculer à la main ?

Merci d'avance
Pushka07 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/08/2006, 16h39   #2
Provisoirement toléré
 
Avatar de Maximilian
 
Inscription : juin 2003
Messages : 2 622
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 2 622
Points : 2 505
Points : 2 505
Citation:
Envoyé par Pushka07
Ex : le 23/07/2006 à 18h30 = 113661400

Avez vous une astuce pour calculer à la main ?
C'est quoi ce calcul

Et en quoi ça concerne MySQL ?
__________________
Pensez au bouton
Maximilian est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/08/2006, 21h36   #3
Invité de passage
 
Inscription : juillet 2006
Messages : 40
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : juillet 2006
Messages : 40
Points : 0
Points : 0
Envoyer un message via MSN à Pushka07
En fait, j'ai une heure et une date limite avant un match à pronostiquer !

Exemple :

Vous pouvez pronostiquer Italie / France avant le 23/07/2006 18h30

Dans ma base de donnée, j'ai un champ "limite" et ce champ est remplie par le nombre de seconde depuis le 1er janvier 1970 00h00 et pour l'exemple, ce nombre est 1153661400

Ma question est, comment calculer ce nombre rapidement à la mimine ?

Merci d'avance pour votre réponse
Pushka07 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/08/2006, 21h42   #4
Candidat au titre de Membre du Club
 
Inscription : août 2005
Messages : 44
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 44
Points : 14
Points : 14
et bien mets ton champ limite en date, comme ca c'est le meme format et ca t'evite de convertir un timestamp en date.

Et tu fais simplement $date_pronostique < $limite_pronistique
Cyrius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/08/2006, 21h47   #5
Invité de passage
 
Inscription : juillet 2006
Messages : 40
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : juillet 2006
Messages : 40
Points : 0
Points : 0
Envoyer un message via MSN à Pushka07
Ce sera une solution si je ne trouve pas un procédé assez rapide pour ce que je souhaite Merci quand même
Pushka07 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/08/2006, 21h49   #6
Candidat au titre de Membre du Club
 
Inscription : août 2005
Messages : 44
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 44
Points : 14
Points : 14
COmment faire plus rapide que
if($date_actuelle < $limite_pronostic)
INSERT pronostic
Cyrius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2006, 18h20   #7
Invité de passage
 
Inscription : juillet 2006
Messages : 40
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : juillet 2006
Messages : 40
Points : 0
Points : 0
Envoyer un message via MSN à Pushka07
Personne n'a une idée pour faire ce calcul ? à part de modifier le script ?
Pushka07 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2006, 18h35   #8
Rédacteur
 
Avatar de Biglo
 
Inscription : juillet 2002
Messages : 537
Détails du profil
Informations personnelles :
Localisation : France, Moselle (Lorraine)

Informations forums :
Inscription : juillet 2002
Messages : 537
Points : 561
Points : 561
Si tu nous disais pourquoi stocker explicitement le nombre de secondes depuis 1970 alors que le type TIMESTAMP le fait déjà sur 4 octets, le tout en permettant de saisir la date sous forme de chaîne ?

Difficile de te répondre sans savoir à quoi ça va servir. Qu'est-ce que tu entends par méthode pour "calculer à la main" ? Tu veux un algo ??

Les fonctions de MySQL ne te suffisent pas ?

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
mysql> SELECT unix_timestamp('2006-07-23 18:30:00');
+---------------------------------------+
| unix_timestamp('2006-07-23 18:30:00') |
+---------------------------------------+
|                            1153672200 |
+---------------------------------------+
 
mysql> SELECT from_unixtime(1153661400);
+---------------------------+
| from_unixtime(1153661400) |
+---------------------------+
| 2006-07-23 15:30:00       |
+---------------------------+
Bref, en ce qui me concerne, je ne sais toujours pas ce que tu cherches

P.S. Tu remarqueras que ton exemple était faux avec le nombre de secondes
Biglo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2006, 21h42   #9
Invité de passage
 
Inscription : juillet 2006
Messages : 40
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : juillet 2006
Messages : 40
Points : 0
Points : 0
Envoyer un message via MSN à Pushka07
Désolé, j'avais oublié un chiffre

Ca sert pour un concours de pronostics ! J'explique :

J'ai un championnat PRO A de volley ball à pronostiquer. Quand je rentre un match, je dois mettre l'heure et la date limite du pronostic donc, quans je rentre un match à pronostiquer avant le 23 juillet 2006 à 18h30, dans ma base de donnée, dans le champ limite, j'ai le nombre de seconde... ici 1153672200
Une fois, j'ai voulu modifier l'heure d'un match et le nombre de seconde ne correspondait pas à la nouvelle heure. C'est donc pour cela que je voulais trouver comment calculer ce nombre pour modifier directement l'info dans la base de donnée...

Est-ce un peu plus clair ?
Pushka07 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2006, 22h25   #10
Rédacteur
 
Avatar de Biglo
 
Inscription : juillet 2002
Messages : 537
Détails du profil
Informations personnelles :
Localisation : France, Moselle (Lorraine)

Informations forums :
Inscription : juillet 2002
Messages : 537
Points : 561
Points : 561
Oui tu as été très clair, mais tu ne réponds pas à mes questions

Pourquoi t'amuser à calculer le nombre de secondes de chaque date, au lieu d'utiliser les types DATETIME ou TIMESTAMP disponibles dans MySQL ? On t'a imposé la structure de la base ?

Et même si tu veux obtenir le nombre de secondes, la fonction "unix_timestamp()" (dont je t'ai donné un exemple dans le post précédent) ne te convient pas ?
Biglo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2006, 22h34   #11
Invité de passage
 
Inscription : juillet 2006
Messages : 40
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : juillet 2006
Messages : 40
Points : 0
Points : 0
Envoyer un message via MSN à Pushka07
En fait, je n'arriverai pas à faire la modif (car je ne suis pas à l'origine du script et son inventeur l'a abondonné et je reprend l'affaire)

J'ai regardé sur la base de donnée, le champ est du type bigint...

Je vous joint la page...

Il faudrait faire au plus simple en fait !
Fichiers attachés
Type de fichier : php index.php (7,6 Ko, 4 affichages)
Pushka07 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2006, 23h16   #12
Rédacteur
 
Avatar de Biglo
 
Inscription : juillet 2002
Messages : 537
Détails du profil
Informations personnelles :
Localisation : France, Moselle (Lorraine)

Informations forums :
Inscription : juillet 2002
Messages : 537
Points : 561
Points : 561
Si tu ne peux pas modifier le type de "limite", ce n'est pas forcément très difficile mais moins propre. En tout cas, BIGINT pour ça, l'ancien webmaster a vu grand

L'ancien webmaster calculait un timestamp (nombre de secondes depuis 1970) en PHP avec mktime(). Comme ici :
Code :
1
2
3
$today = mktime(date("H"), date("i"), date("s"), date("m"), date("d"), date("Y"), -1);
 
$req = "select * from ".$tbl_prochainspronos." where ((limite-$today)>0) order by `limite` DESC";
Tu peux garder cette méthode si tu préfères. Dans ce cas, pour avoir le timestamp du 3 septembre 2006 à 20h30 (par exemple), tu peux faire :
Code :
$ts = mktime(20, 30, 0, 9, 3, 2006)
Ou tu peux faire directement dans MySQL
Code :
UNIX_TIMESTAMP('2006-09-03 20:30:00')
Par exemple dans un UPDATE (vu que c'est ça qui te pose problème à la base) :
Code :
UPDATE ta_table SET limite = UNIX_TIMESTAMP('2006-09-03 20:30:00');
Les deux méthodes ne sont pas difficiles. Tu as un formulaire avec le jour, le mois, l'année, etc... Avec tout ça, tu construits un timestamp soit avec MySQL soit avec PHP, et le tour est joué.
Biglo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2006, 17h47   #13
Invité de passage
 
Inscription : juillet 2006
Messages : 40
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : juillet 2006
Messages : 40
Points : 0
Points : 0
Envoyer un message via MSN à Pushka07
Citation:
Envoyé par Biglo
Ou tu peux faire directement dans MySQL
Code :
UNIX_TIMESTAMP('2006-09-03 20:30:00')
Je vais opter pour cette solution mais peux tu m'expliquer comment faire ?
Pushka07 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2006, 18h36   #14
Invité de passage
 
Inscription : juillet 2006
Messages : 40
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : juillet 2006
Messages : 40
Points : 0
Points : 0
Envoyer un message via MSN à Pushka07
Un petit UP
Pushka07 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2006, 21h06   #15
Provisoirement toléré
 
Avatar de Maximilian
 
Inscription : juin 2003
Messages : 2 622
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 2 622
Points : 2 505
Points : 2 505
Citation:
Envoyé par Pushka07
Je vais opter pour cette solution mais peux tu m'expliquer comment faire ?
Comment faire quoi ? La solution donnée par Biglo est on ne peut plus claire... Tu as essayé au moins ?
__________________
Pensez au bouton
Maximilian est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h57.


 
 
 
 
Partenaires

Hébergement Web