2017-02-25 1 views
1

J'essaie de créer un calendrier d'événements. Toutes les dates fonctionnent bien mais le 1er de chaque mois est devenu le dernier du mois précédent. Voici ma requête Mysql -Mysql FROM_UNIXTIME convertit le 1er mars en date du 28 février

Recherche 1-

$sql = "select DATE_FORMAT(FROM_UNIXTIME(post_date), '%Y') as mnth, 
       DATE_FORMAT(FROM_UNIXTIME(post_date), '%M') as yr 
     from ".EVENT." 
     GROUP BY (DATE_FORMAT(FROM_UNIXTIME(post_date), '%M %Y')) 
     ORDER BY(post_date) ASC limit $offset ,$limit"; 

En boucle -

$loop="SELECT * 
     FROM ".EVENT." 
     WHERE event_status='1' 
      AND DATE_FORMAT(FROM_UNIXTIME(post_date), '%Y')=".$result['mnth']." 
      AND DATE_FORMAT(FROM_UNIXTIME(post_date), '%M')='".$result['yr']."' 
     ORDER BY(post_date) ASC" ; 
+0

Vous ne devez pas utiliser 'FROM_UNIXTIME' sur les colonnes d'horodatage stockées de manière interne. MySQL sait comment les gérer. 'FROM_TIMESTAMP' peut avoir des problèmes liés au fuseau horaire du serveur. – apokryfos

+0

Merci pour la réponse rapide. comment puis-je changer le fuseau horaire du serveur ?? –

+0

Vous ne devriez pas avoir besoin de faire cela. La suppression de 'FROM_UNIXTIME' aide-t-elle du tout à résoudre le problème? – apokryfos

Répondre

0

En vérifiant le fuseau horaire de jeu mysql je trouve qu'il est défini dans MST et je stocké toute date Format UTC. Pour résoudre ce problème, je viens de convertir mon fuseau horaire par défaut UTC en MST et cela résout mon problème.