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 ;)
Version imprimable
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 ;)
C'est quoi ce calcul 8OCitation:
Envoyé par Pushka07
Et en quoi ça concerne MySQL ?
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 :mrgreen: ?
Merci d'avance pour votre réponse
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
Ce sera une solution si je ne trouve pas un procédé assez rapide pour ce que je souhaite ;) Merci quand même:D
COmment faire plus rapide que :aie:
if($date_actuelle < $limite_pronostic)
INSERT pronostic
Personne n'a une idée pour faire ce calcul ? à part de modifier le script ?
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 ?
Bref, en ce qui me concerne, je ne sais toujours pas ce que tu cherches ;)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 | +---------------------------+
P.S. Tu remarqueras que ton exemple était faux avec le nombre de secondes :mouarf:
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 ?
Oui tu as été très clair, mais tu ne réponds pas à mes questions :D
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 ?
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 !
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 :lol:
L'ancien webmaster calculait un timestamp (nombre de secondes depuis 1970) en PHP avec mktime(). Comme ici :
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:
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";
Ou tu peux faire directement dans MySQLCode:$ts = mktime(20, 30, 0, 9, 3, 2006)
Par exemple dans un UPDATE (vu que c'est ça qui te pose problème à la base) :Code: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é.Code:UPDATE ta_table SET limite = UNIX_TIMESTAMP('2006-09-03 20:30:00');
Je vais opter pour cette solution mais peux tu m'expliquer comment faire ?Citation:
Envoyé par Biglo
Un petit UP ;)
Comment faire quoi ? La solution donnée par Biglo est on ne peut plus claire... Tu as essayé au moins ?Citation:
Envoyé par Pushka07