PLATFORM: PHP & mySQLPHP mySQL - UNIX_TIMESTAMP est pas égal à StrToTime
je stocke la date + fois dans la base de données dans le format suivant: Date ("Y-m-d H: i: s"). Un exemple d'une valeur que j'ai dans ma base de données est: 2010-01-05 07:36:33. Dans mon scénario, je l'ai réglé le fuseau horaire que date_default_timezone_set("America/Chicago");
PROBLÈME:
Je l'ai lu quelque part le UNIX_TIMESTAMP et j'utilisais que dans ma requête. La valeur de UNIX_TIMESTAMP sur une valeur de date du DB, semble être différente de la strotime (DB date Value).
Exemple:
Considèrent que l'une des valeurs DB pour la colonne de date dans mon DB est 2010-01-05 07:36:33 Maintenant, si cette date je vais chercher de la manière suivante :
$result = mysql_query("SELECT date, UNIX_TIMESTAMP(date) AS ut_date FROM table");
$row = mysql_fetch_row($result);
//The result of this is:
$row['date'] = 2010-01-05 07:36:33
$row['ut_date'] = 1262657193
strtotime($row['date']) gives 1262698593
Pour mes autres calculs dans mon application, j'ai besoin de travailler avec strtotime (date). J'ai beaucoup de comparaisons à faire de cette façon. Mon problème aurait résolu, si UNIX_TIMESTAMP (date) était identique à strtotime (date). L'un des exemple de requête que je dois travailler avec, est:
$gap = 1; // time in minutes
$tm2 = date ("Y-m-d H:i:s", mktime (date("H"),date("i")-$gap,date("s"),date("m"),date("d"),date("Y")));
$target = strtotime($tm2);
$result2 = mysql_query("UPDATE table2 SET stat = 0 WHERE UNIX_TIMESTAMP(today_login_time) < $target ");
Ce qui précède me donne des résultats incorrects. Si j'essaie de remplacer UNIX_TIMESTAMP par strtotime dans la requête ci-dessus, cela me donne une erreur car la fonction strtotime semble être la fonction PHP et non la fonction mySQL correspondante. Y a-t-il une fonction mySQL respective pour le strtotime? Comment puis-je résoudre le problème ci-dessus? Le code pour résoudre le problème ci-dessus est très apprécié.
Merci d'avance.
J'ai configuré le fuseau horaire comme date_default_timezone_set ("America/Chicago"). Alors, comment puis-je résoudre cela maintenant? Je vous remercie. – Devner
par exemple. en définissant le même fuseau horaire pour le serveur MySQL, soit globalement (par exemple dans son fichier .ini), soit par session ('SET time_zone = 'America/Chicago'' devrait fonctionner). Vous pouvez également toujours revenir au fuseau horaire UTC en utilisant UTC_TIMESTAMP() de MySQL ou en envoyant simplement l'horodatage unix via UNIX_TIMESTAMP(), voir http://dev.mysql.com/doc/refman/5.1/fr/date-and-time -functions.html – VolkerK
Merci pour l'info. Donc, je viens d'utiliser SET time_zone = 'America/Chicago'; en haut du script pour faire ce travail? Cela sera-t-il suffisant? Je ne suis pas sûr si l'hébergeur me donnera le fichier .ini à modifier. Donc, si c'est quelque chose que je peux gérer via mon codage dans les scripts, ce sera génial. S'il vous plaît, faites-moi savoir. Je vous remercie. – Devner