2010-04-16 2 views
1

Je stocke des entrées d'activité dans une table MySQL. La table a un champ date_created de type timestamp et par PHP-je insérer les entrées d'activité en fonction de GMT:Comment obtenir #entries de dernière heure dans MySQL, en corrigeant pour le fuseau horaire?

$timestamp = gmdate("Y-m-d H:i:s", time()); 

Cela fonctionne très bien. Sur mon client, je suis sur GMT + 2. S'il est 16h00 ici et que j'insère une entrée, elle est stockée dans MySQL à 14h00. C'est comme prévu je suppose. Mon

Maintenant je voudrais obtenir le nombre d'entrées d'activité de MySQL au cours de la dernière heure. J'utilise la requête suivante:

SELECT COUNT(id) as cnt FROM karmalog WHERE user_id = ' 89' AND event='IMG_UPD' 
AND date_created > DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 1 HOUR) 

Cela renvoie rien, car CURRENT_TIMESTAMP utilise les paramètres de fuseau horaire MySQL, qui est réglée sur le système, qui est réglé sur GMT + 2. Je suppose que ce que je cherche est un GMT_CURRENTTIMESTAMP dans MySQL, est-ce qu'il y a une telle chose?

Répondre

2

Il existe la fonction UTC_TIMESTAMP() qui renvoie l'horodatage UTC actuel d'une manière contextuelle. Vous pouvez l'utiliser à la place de CURRENT_TIMESTAMP:

SELECT COUNT(id) as cnt FROM karmalog WHERE user_id = ' 89' AND event='IMG_UPD' 
AND date_created > DATE_SUB(UTC_TIMESTAMP(), INTERVAL 1 HOUR); 
+0

Cela fonctionne, merci. Je ne savais pas que UTC et GMT sont la même chose, du point de vue du fuseau horaire. Je suppose que je cherchais le mauvais terme. – Ferdy

Questions connexes