Las fechas y los horarios son importantes, ayudan a mantener las cosas organizadas y son un aspecto integral de cualquier operación de software.

Trabajar de manera eficiente con ellos dentro de la base de datos a veces puede parecer confuso, ya sea trabajando en las distintas zonas horarias, agregando / restando fechas y otras operaciones.

Conozca las diversas funciones de MySQL disponibles para manejar y administrar fácilmente fechas / horas dentro de su base de datos.

Trabajar con zonas horarias

Para ayudar a mantener las cosas estandarizadas, solo debe trabajar con fechas / horas en la zona horaria UTC. Cada vez que establece una conexión a la base de datos MySQL, debe cambiar la zona horaria a UTC, lo que se puede hacer con la siguiente declaración SQL:

SET TIME_ZONE = '+0: 00'

Dado que ahora todas las fechas se guardarán en UTC, siempre sabrá con qué está trabajando, haciendo las cosas más simples y directas.

Cuando sea necesario, puede convertir la zona horaria de cualquier valor de fecha y hora / marca de tiempo con el práctico

instagram viewer
CONVERT_TZ () Función MySQL. Primero debe conocer el desplazamiento, por ejemplo, PST en la costa oeste de América del Norte es UTC -08: 00, por lo que podría usar:

PolyTime es la mejor aplicación de conversión de zona horaria para varias ciudades a la vez

PolyTime, una nueva aplicación de MakeUseOf, facilita la comparación de zonas horarias en todo el mundo. Esto es lo que puede hacer con él y cómo funciona.

SELECCIONAR CONVERT_TZ ('2021-02-04 21:47:23', '+0: 00', '-8: 00');

Esto resulta en 2021-02-04 13:47:23 que es exactamente correcto. Los tres argumentos pasados ​​a CONVERT_TZ () son primero la fecha y hora / marca de tiempo con la que estás comenzando (usa ahora () para la hora actual), el segundo siempre será '+0:00' ya que todas las fechas están forzadas a UTC en la base de datos, y el último es el desplazamiento al que deseamos convertir la fecha.

Agregar / restar fechas

Muchas veces necesita sumar o restar fechas, por ejemplo, si necesita recuperar registros de hace una semana, o programar algo dentro de un mes.

Afortunadamente, MySQL tiene la excelente DATE_ADD () y DATE_SUB () funciones que hacen que esta tarea sea extremadamente fácil. Por ejemplo, puede restar dos semanas de la fecha actual con la declaración SQL:

SELECT DATE_SUB (ahora (), intervalo de 2 semanas);

Si, en cambio, quisiera agregar tres días a una marca de tiempo existente, usaría:

SELECT DATE_ADD ('2021-02-07 11:52:06', intervalo de 3 días);

Ambas funciones funcionan de la misma manera, el primer argumento es la marca de tiempo con la que está comenzando y el segundo argumento es el intervalo para sumar o restar. El segundo argumento siempre tiene el mismo formato comenzando con la palabra intervalo seguido de un valor numérico y el intervalo en sí, que puede ser cualquiera de los siguientes: segundo, minuto, hora, día, semana, mes, trimestre, año.

Para otro ejemplo, si quisiera recuperar todos los inicios de sesión que ocurrieron en los últimos 34 minutos, podría usar una declaración SQL como:

SELECCIONAR * DESDE inicios de sesión DONDE login_date> = DATE_SUB (ahora (), intervalo de 45 minutos);

Como puede ver, esto recuperaría todos los registros del inicios de sesión tabla con una fecha de inicio de sesión mayor que la hora actual menos 45 minutos, o en otras palabras, los últimos 45 minutos.

Obtenga la diferencia entre fechas

A veces es necesario saber cuánto tiempo ha transcurrido entre dos fechas. Puede obtener fácilmente el número de días entre dos fechas diferentes con el DATEDIFF función, como la siguiente declaración SQL:

SELECT DATEDIFF (ahora (), '2020-12-15');

los DATEDIFF La función toma dos argumentos, los cuales son marcas de fecha / hora y da el número de días entre ellos. El ejemplo anterior mostrará el número de días transcurridos desde el 15 de diciembre de 2020 hasta hoy.

Para obtener el número de segundos entre dos fechas, el TO_SECONDS () La función puede ser útil, por ejemplo:

SELECCIONAR TO_SECONDS (ahora ()) - TO_SECONDS ('2021-02-05 11:56:41');

Esto resultará en el número de segundos entre las dos fechas proporcionadas.

Extraer segmentos de fechas

Hay varias funciones de MySQL que le permiten extraer fácilmente segmentos específicos de fechas, como si solo quisiera el mes, el día del año o la hora. Aquí hay algunos ejemplos de tales funciones:

SELECCIONAR MES ('2021-02-11 15:27:52');
SELECCIONAR HORA (ahora ());
SELECCIONE EL DÍA DEL AÑO ('2021-07-15 12:00:00');

Las declaraciones SQL anteriores resultarían en 02, la hora actual, y 196 ya que el 15 de septiembre es el día 196 del año. Aquí hay una lista de todas las funciones de extracción de fecha disponibles, cada una de las cuales solo toma un argumento, la fecha se extrae de:

- SEGUNDO()
- MINUTO ()
- HORA()
- DÍA()
- SEMANA () - Número 0 - 52 que define la semana dentro del año.
- MES()
- TRIMESTRE () - Número 1 - 4 que define el trimestre del año.
- AÑO()
- DAYOFYEAR (): el día del año (p. Ej. 15 de septiembre = 196).
- LAST_DAY (): el último día del mes especificado.
- FECHA (): la fecha en formato AAAA-MM-DD sin la hora.
- HORA () La hora en formato HH: II: SS sin la fecha.
- TO_DAYS (): el número de días desde el 0 d.C.
- TO_SECONDS (): el número de segundos desde el 0 d.C.
- UNIX_TIMESTAMP () - El número de segundos desde la época (1 de enero de 1970)

Por ejemplo, si tal vez solo desea recuperar el mes y año en que se crearon todos los usuarios, puede usar una declaración SQL como:

SELECCIONAR ID, MES (creado_en), AÑO (creado_en) DE los usuarios;

Esto recuperaría todos los registros dentro del usuarios tabla y muestra el número de identificación, mes y año en el que se creó cada usuario.

Agrupar registros por período de fecha

Un uso excelente de las funciones de fecha es la capacidad de agrupar registros por período de fecha utilizando AGRUPAR POR dentro de sus declaraciones SQL. Por ejemplo, tal vez desee extraer la cantidad total de todos los pedidos en 2020 agrupados por mes. Puede usar una declaración SQL como:

SELECCIONAR MES (created_at), SUM (amount) FROM orders WHERE created_at ENTRE '2020-01-01 00:00:00' Y '2020-12-31 23:59:59' GRUPO POR MES (created_at);

Esto recuperaría todos los pedidos realizados en el año 2020, los agruparía por el mes en que se crearon y devolvería 12 registros que muestran la cantidad total solicitada cada mes del año.

Tenga en cuenta que para un mejor rendimiento del índice, siempre es mejor evitar el uso de funciones de fecha como AÑO() dentro de la cláusula WHERE de las sentencias SQL y, en su lugar, utilice la ENTRE operador como se muestra en el ejemplo anterior.

Nunca más se confunda con las fechas

Con el conocimiento anterior, ahora puede trabajar, traducir y realizar operaciones de manera eficiente en fechas y horas en una amplia gama de casos de uso.

Recuerde usar siempre UTC cuando trabaje con fechas para simplificar, y utilice los consejos anteriores para administrar de manera eficiente fechas dentro de su software, ya sea para completar cálculos simples o generar informes agrupados por fecha con facilidad períodos.

Si es algo nuevo en SQL, asegúrese de consultar estos comandos SQL esenciales para ayudar a mejorar su uso de SQL.

Correo electrónico
Cómo crear informes y documentos profesionales en Microsoft Word

Esta guía examina los elementos de un informe profesional y revisa la estructuración, el estilo y la finalización de su documento en Microsoft Word.

Temas relacionados
  • Sin especificar
Sobre el Autor
Matt Dizak (16 Artículos publicados)Más de Matt Dizak

Suscríbete a nuestro boletín

¡Únase a nuestro boletín de noticias para obtener consejos técnicos, reseñas, libros electrónicos gratuitos y ofertas exclusivas!

Un paso más…!

Confirme su dirección de correo electrónico en el correo electrónico que le acabamos de enviar.

.