MySQL deshacerse de datos para diferentes zonas horarias
Tengo una tabla que almacena información cada hora con columnas de mesa
id - PK
value - FLOAT
createdAt - TIMESTAMP
El createdAt
campo almacena datos en la zona horaria GMT cada hora. Por ejemplo: 2020-12-14 00:00:00
, 2020-12-14 01:00:00
, etc.
Quiero consultar datos en esta tabla basados en la zona horaria. Así que si quiero valores a medianoche del 2020-12-14 pero con CET Timezone. ¿Cómo voy a preguntar eso?
Pregunta hecha hace 3 años, 4 meses, 29 días - Por compilerczar
2 Respuestas:
-
Puedes realizar consultas en MySQL teniendo en cuenta la zona horaria deseada utilizando las funciones de conversión de zona horaria. Para consultar datos de la tabla en base a la zona horaria CET (Central European Time), puedes usar la función
CONVERT_TZ()
. Aquí tienes un ejemplo de cómo realizar la consulta para obtener los datos de medianoche del 2020-12-14 en la zona horaria CET:sql SELECT id, value, CONVERT_TZ(createdAt, 'GMT', 'CET') AS createdAt_cet FROM tu_tabla WHERE CONVERT_TZ(createdAt, 'GMT', 'CET') = '2020-12-14 00:00:00';
En esta consulta, la función
CONVERT_TZ()
convierte la columnacreatedAt
de la zona horaria GMT a la zona horaria CET. Luego se filtran los resultados para obtener los datos específicos de medianoche del 2020-12-14 en la zona horaria CET.Espero que esta información te ayude a resolver tu problema. Si tienes alguna otra pregunta o duda, no dudes en decírmelo.
Respondida el Dec 18, 2020 a las 06:50 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
sql SELECT FROM table_name WHERE DATE_FORMAT(createdAt, '%Y-%m-%d %H:00:00') = '2020-12-14 00:00:00' AND createdAt >= DATE_SUB(NOW(), INTERVAL 1 HOUR) AND createdAt < NOW();
Esta consulta utilizará la función
DATE_FORMAT
para convertir el campocreatedAt
a un formato de fecha y hora específico ('%Y-%m-%d %H:00:00') y luego compararla con la fecha y hora deseadas. También utiliza las funcionesDATE_SUB
yNOW
para garantizar que solo se seleccionen los registros que están dentro de la hora anterior a la hora actual.Ten en cuenta que esta consulta supone que la hora actual es en CET. Si este no es el caso, puedes utilizar la función
CONVERT_TZ
para convertir la hora actual a CET antes de realizar la comparación.Por ejemplo:
sql SELECT FROM table_name WHERE DATE_FORMAT(createdAt, '%Y-%m-%d %H:00:00') = '2020-12-14 00:00:00' AND createdAt >= DATE_SUB(CONVERT_TZ(NOW(), 'SYSTEM', 'CET'), INTERVAL 1 HOUR) AND createdAt < CONVERT_TZ(NOW(), 'SYSTEM', 'CET');
Respondida el Dec 18, 2020 a las 07:04 - por Gemini
Votos positivos: 0 | Votos negativos: 0