¿Hay alguna forma en mysql de calcular el desplazamiento para cualquier zona horaria? Por ejemplo, para obtener la hora local en la zona horaria 'Asia/Calcuta', lo que quiero hacer es calcular la compensación para esta zona horaria y agregar esa compensación a GMT para obtener la hora local.En MySQL cálculo de desplazamiento para un huso horario
Respuesta
Si desea calcular el desplazamiento de una zona horaria como America/Vancouver UTC puede hacerlo de la siguiente manera:
SELECT (unix_timestamp() - unix_timestamp(convert_tz(now(), 'Etc/UTC', 'America/Vancouver')))/3600 as offset;
Para que esto funcione, primero deberá cargar la información de la zona horaria en mysql como se describe aquí: http://dev.mysql.com/doc/refman/5.0/en/mysql-tzinfo-to-sql.html
DATEDIFF(NOW(), UTC_TIMESTAMP())
El desplazamiento dependerá del tiempo que le interesa - por ejemplo, estaría actualmente tiene un desplazamiento de una hora de UTC, pero durante el invierno mi desplazamiento sería cero.
A juzgar por el docs page on MySQL time zone support, desea utilizar la función convert_tz
. Si intenta convertir UTC a la hora local, pase "Etc/GMT + 0" como zona horaria "desde" y "Asia/Calcuta" como "a".
SET time_zone = '-07:00';
Sólo puede pasar en un
compensarhttp://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html
Esto no funciona tan bien como uno piensa .... –
¡Nunca use la compensación para establecer una zona horaria! Use siempre el nombre, como "Europa/Praga". De lo contrario, se sorprenderá mucho cuando ocurra el horario de verano. –
SELECT TIMESTAMPDIFF(HOUR, UTC_TIMESTAMP(), NOW());
Si la zona horaria del servidor es PST Esto devolverá -8
.
SELECT TIMESTAMPDIFF(SECOND, NOW(), UTC_TIMESTAMP());
sumar el resultado de lo anterior a cualquier marca de tiempo Unix si quieres compararlo con DateTime MySQL.
I mezclado respuestas de @ColinM y @Kenneth Spencer porque quería el desplazamiento de una zona horaria arbitraria en horas:
TIMESTAMPDIFF(HOUR, UTC_TIMESTAMP(), CONVERT_TZ(UTC_TIMESTAMP(), "UTC", "America/Denver"))
-
SELECT ROUND(TIMESTAMPDIFF(MINUTE, UTC_TIMESTAMP(), CONVERT_TZ(UTC_TIMESTAMP(), "Etc/UTC", "Asia/Kolkata"))/60,1)
Como Kenneth señaló que necesita para carga la información de la zona horaria: http://dev.mysql.com/doc/refman/5.0/en/mysql-tzinfo-to-sql.html
Pero luego puedes hacer cosas divertidas como encontrar la compensación para varias zonas horarias a la vez:
SELECT Name,
TIMESTAMPDIFF(HOUR, UTC_TIMESTAMP(), CONVERT_TZ(UTC_TIMESTAMP(), "Etc/UTC", Name)) as Offset
FROM mysql.time_zone_name
WHERE (Name IN ('America/Vancouver', 'Etc/UTC', 'America/Denver'))
Dar:
+-------------------+--------+
| Name | Offset |
+-------------------+--------+
| America/Denver | -6 |
| America/Vancouver | -7 |
| Etc/UTC | 0 |
+-------------------+--------+
Me pregunto si la respuesta de @ ColinM anterior es seguro. ¿Lee el reloj una o dos veces? ¿Hay alguna posibilidad de que UTC_TIMESTAMP() y NOW() puedan estar separados por un segundo? No lo sé, pero esto evitaría eso.
SET @now = now();
SET @utc = CONVERT_TZ(@now, 'SYSTEM', '+00:00');
SELECT TIMESTAMPDIFF(MINUTE, @utc, @now);
esto es mitad pregunta mitad respuesta – Drew
SELECT TIME_FORMAT(TIMEDIFF(NOW(), CONVERT_TZ(NOW(), 'Asia/Calcutta', 'UTC')), '%H:%i') AS offset;
Dar
+--------+
| offset |
+--------+
| 05:30 |
+--------+
Por lo general, es una buena idea exponer el código en su respuesta. Cuéntanos cómo funciona o qué estás haciendo exactamente. Esto ayuda a los desarrolladores más nuevos a entender exactamente lo que está sucediendo. –
- 1. Java MySQL Timestamp huso horario problemas
- 2. Cómo especificar un huso horario en UIDatePicker
- 3. Huso horario con horario de verano en PostgreSQL
- 4. ¿Hay MySQL equivalente al TIMESTAMP de Oracle CON HUSO HORARIO?
- 5. Python: muestra la hora en un huso horario diferente
- 6. Symfony2: Dónde establecer un huso horario definido por el usuario
- 7. Cómo crear un nuevo objeto DateTime en un huso horario específico (preferiblemente el huso horario predeterminado de mi aplicación, no UTC)?
- 8. PHP ini date.timezone? ¿Huso horario del servidor o del cliente?
- 9. convertir el tiempo de un huso horario a otro en los carriles
- 10. ¿Cómo consigo que Ruby analice el tiempo como si se tratara de un huso horario diferente?
- 11. Mostrar información sobre herramientas con el huso horario correcto con el plugin de FlQ jQuery
- 12. Clasificación de MySQL en un cálculo
- 13. ¿Cómo puedo configurar el huso horario antes de llamar a strftime?
- 14. MYSQL Resultados de suma de un cálculo
- 15. Ajustar el horario al horario de verano para la hora local C++
- 16. Horario de programación para portar un programa
- 17. ¿Es esto un error de php, o algo está mal con mi configuración de huso horario/PHP?
- 18. Cálculo de medias recortadas en MySQL
- 19. horario de verano en Javascript para 1974?
- 20. Cálculo del rango percentil en MySQL
- 21. Determinar si el horario de verano (DST) está activo en Java para una fecha especificada
- 22. Cálculo del promedio ponderado en MySQL?
- 23. Rails/Postgresql: ¿Cómo puedo agrupar registros rápidamente utilizando un campo de fecha y hora por fecha en un huso horario específico?
- 24. Cálculo del horario de verano a partir de la única fecha
- 25. Programación y horario de verano
- 26. Horario de verano en Python
- 27. Cálculo de la duración de tiempo total en MySQL
- 28. Horario de verano en lubridate
- 29. Envolver un cálculo asíncrono en un cálculo síncrona (bloqueo)
- 30. Cómo ejecutar un script de Python en un horario específico
DATEDIFF devuelve la diferencia en días * * de horas o minutos .. – ColinM