2010-06-03 6 views
0

Possible en double:
Add 2 hours to current time in MySQL?question temps SQL - en ont besoin 6 heures avant

Mon serveur est actuellement basé sur nous heure de l'Est, et que je suis au Royaume-Uni, j'ai besoin pour avancer de 6 heures.

Lorsque vous utilisez NOW() dans mysql, je reçois le mauvais moment, y at-il quelque chose que je peux ajouter à NOW() pour le faire avancer 6 heures? Merci

+3

Cela dépend sorte de votre application, mais dans de nombreux cas, il est une bonne idée de stocker tout le temps en UTC et faire les conversions de fuseau horaire dans l'interface utilisateur. De cette façon, vous n'avez pas à vous soucier des fuseaux horaires de votre serveur et quoi que ce soit de ce genre. –

+0

++ Matti. Si vous utilisez les horaires locaux, ils seront tous au moins d'une heure pour vos économies légères d'entrée/sortie. Croyez-moi, c'est mauvais. Utilisez UTC. – DougN

+0

Whoa! Fais attention! Ajouter simplement 6 heures ne fonctionnera pas dans le cas général car aux Etats-Unis nous avons l'heure d'été. L'heure de décalage n'est pas toujours de 6 heures. Parfois c'est cinq. Vous avez donc besoin d'une fonction qui convertira le temps en fonction des fuseaux horaires. –

Répondre

1

Vous souhaitez utiliser la fonction DateAdd:

Exemple:

SELECT DATEADD(hour, 6, GetDate()) 
+0

C'est MySQL, pas MSSQL. – Guffa

+0

Espérons qu'il y ait une fonction équivalente dans MySQL – Darknight

1

Ref this

SELECT ADDTIME(now(), '06:00:00') 

VOIR ici avec differnce

SELECT ADDTIME(now(), '06:00:00') as EAST_TIME , now() as UK_TIME 
0

Fuseaux horaires par connexion. Chaque client qui se connecte a son propre paramètre de fuseau horaire, donné par la variable session time_zone. Initialement, la variable de session prend sa valeur de la variable globale time_zone, mais le client peut changer son propre fuseau horaire avec cette instruction:

mysql> SET time_zone = timezone;

La valeur peut être donnée sous la forme d'une chaîne indiquant un décalage par rapport à l'UTC, par exemple '+10: 00' ou '-6: 00'.

1

Oui, vous pouvez utiliser la fonction date_add:

date_add(now(), interval 6 hour) 

Vous pouvez également utiliser adddate qui est un alias pour date_add. Vous pouvez également stocker l'heure UTC dans la base de données et la convertir en heure locale lorsque vous l'affichez.

Si la conversion s'effectue d'un fuseau horaire à un autre plutôt qu'un nombre d'heures défini, vous pouvez utiliser la fonction convert_tz. Exemple:

convert_tz(now(), '-6:00', '0:00') 

ou:

convert_tz(now(), 'US/Eastern', 'MET') 
+0

+1: L'OP doit utiliser CONVERT_TZ, et apprendre quel fuseau horaire l'instance de mysql utilise ... –