La administración de la información muchas veces demanda el uso de fechas y horas específicas, sobre todo de aquellas transacciones que requieren un control de accesos o de información que puede tener relevancia para asuntos administrativos, así como para registros de entradas y salidas, antigüedad de empleados, mantenimientos programados, entre otras necesidades que requieren una apropiada administración de tiempos y movimientos.
Bajo estos parámetros, existen diferentes soluciones que MySQL ofrece para una adecuada administración del Sistema de Gestión de Base de Datos, las cuales permitirán un adecuado manejo de estos elementos o variables con el fin de registrarlos en un formato apropiado y realizar consultas correctas de dicha información, lo que garantiza el eficiente uso de estos elementos.
Manejo de fechas con DATE, TIME y YEAR
Las fechas son importantes porque señalan una celebración, el vencimiento de algún plazo significativo o el inicio de un proyecto; además, en conjunto con las horas, organizan el día a día y permiten establecer cuándo suceden las cosas.
El uso de fechas y horas puede resultar un poco complejo debido a sus diferentes formatos, por ejemplo, en países como Estados Unidos se representa con el esquema mm-dd-aaaa, mientras que en México se emplea el dd-mm-aaaa. Adicionalmente, en SQL se utiliza un formato distinto para almacenar fechas y horas; en este sentido, Programiz (2023) lo describe con mayor detalle:
Figura 9.1. Formato para fechas y horas.
Fuente: Programiz. (2023). SQL Date and Time. Recuperado de https://www.programiz.com/sql/date-time
Como puedes ver, existen diversas funciones disponibles para cada tipo de base de datos; por tanto, a continuación, se explicarán las más frecuentes.
En esta ocasión, utilizarás la tabla de datos Productos.csv, la cual debes importar a tu base de datos de trabajo. En ella, encontrarás todos los registros disponibles, entre los que destaca la fecha en que los productos fueron dados de alta:
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Tu primer requerimiento de información será listar los productos recién dados de alta en el catálogo, por lo que debes tomar como referencia el primer día del año:
#Lista los productos que fueron registrados en este año tomando como referencia
#la fecha del primero de enero
SELECT * FROM estudiantes.productos WHERE RegisterDate > "2023-01-01";
Así, obtienes justo los registros que cumplen con tu condición, aunque esto depende de que el formato empleado para realizar la búsqueda coincida con el de tu tabla de datos. Esto se muestra detalladamente en la pantalla de Programiz (2023), llamada “SQL Date and Time”:
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Con base en un determinado criterio de fecha, obtienes lo que necesitas de tu conjunto de datos. Hasta este momento, las acciones ejecutadas no difieren mucho de las búsquedas que realizaste anteriormente, solo que en esta ocasión procediste sobre un campo que contiene fechas.
Funciones de fecha. En el lenguaje SQL, encontrarás diversas funciones predefinidas para operar con fechas; en este caso, W3schools (2023) lista las siguientes:
Figura 9.2. Funciones predefinidas para operar con fechas.
Fuente: W3schools. (2023). SQL Date Functions. Recuperado de http://www-db.deis.unibo.it/courses/TW/DOCS/w3schools/sql/sql_dates.asp.html#gsc.tab=0
A continuación, se presentan algunos ejemplos de cómo operan estas funciones en SQL. Para agregar un producto nuevo, con número ID= 87 y con la fecha actual del sistema, utilizando la función NOW() dentro de un campo tipo fecha, escribe la siguiente instrucción:
INSERT INTO estudiantes.productos (ID,SupplierIDs,ProductCode,ProductName,RegisterDate,StandardCost,ListPrice,ReorderLevel,TargetLevel,QuantityPerUnit,Discontinued,MinimumReorderQuantity,Category,Attachments) VALUES (87,5,"NWTM-42","Nuevo producto con fecha",NOW(),15.5,20.1,15,20,"1 Kilo per box","FALSO",20,"Sauces",NULL);
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Para continuar, necesitarás esta nueva tabla: RegistroProductos.csv. En ella, ejecutarás las funciones YEAR, DATE y TIME:
#Inserta el año, la hora y la fecha de registro de un nuevo producto
INSERT INTO estudiantes.registroproductos (IDProducto,AnioRegistro,HoraRegistro,FechaRegistro)
VALUES (1,YEAR(CURDATE()),TIME(NOW()),CURRENT_TIMESTAMP());
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Para la función YEAR(), se utilizó CURDATE(), ya que recupera la fecha actual del sistema, aunque solo muestra el año. Cabe mencionar que el campo que guarda el resultado (AnioRegistro) tiene formato INT, así que nada más recibe el año y no toda la fecha.
En el caso de TIME(), se utiliza una función que acepta tanto la fecha como la hora, es decir, NOW(). El campo que admite este resultado (HoraRegistro) tiene el formato TIME, pues guardará la hora, pero no la fecha.
Para obtener la fecha completa y almacenarla tal cual, utiliza la función CURRENT_TIMESTAMP(), que incluye fecha y hora del sistema, en ese orden. El tipo de campo que permite este valor (FechaRegistro) es DATE, así que guarda tanto fecha como hora.
Para vigencias, horas de trabajo a cobrar, onomásticos, inicio de vacaciones o cualquier otra actividad, contar con los días y horas bien medidas y calculadas es de gran ayuda.
Tipos de datos de tiempo DATETIME y TIMESTAMP
Cada campo de datos requiere de un tipo adecuado, según la información que se pretenda guardar; por ejemplo, el número de materias de un alumno necesita de un tipo INT (entero), mientras que a una cuenta de ahorro le vendría mejor un tipo DOUBLE (doble). En el caso de las fechas, DATETIME es el más completo, ya que permite almacenar valores desde el primero de enero de 1753 hasta el 31 de diciembre de 9999.
La sintaxis de DATETIME es la siguiente:
DATETIME (“Formato de Fecha”,”Formato de Hora”)
NOTA. En caso de no llenar los parámetros de esta función, se utilizarán los valores de formato por defecto para fecha y hora.
En MySQL Workbench, se define un tipo de dato DATETIME de la siguiente forma:
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
En la imagen, se observa que se definió el campo FechaRegistro como DATETIME, con la intención de que contenga tanto la fecha como la hora que el usuario desee ingresar.
Al realizar la consulta, se muestra de esta manera:
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Por otro lado, el tipo de dato TIMESTAMP se utiliza cuando requieres guardar valores en un rango de '1970-01-01 00:00:01' GMT a '01/09/2038 03:14:07' GMT. Cabe señalar que TIMESTAMP se ve afectado por las configuraciones y ajustes de la zona horaria, mientras que DATETIME es constante.
Otra diferencia es que TIMESTAMP ocupa cuatro bytes, mientras que DATETIME requiere de ocho, es decir, implican un menor o mayor consumo de memoria, según el caso.
¿Cuándo utilizar uno u otro tipo? En términos generales, son muy similares, pues solo difieren en el tamaño de bytes y en el rango; por tanto, debes valorar si los utilizarás para actualizar de forma regular registros sobre los que influya la zona horaria.
NOTA. Los valores de TIMESTAMP se convierten de la zona horaria actual a UTC cuando se almacenan; al momento de recuperarlos, regresan de UTC a la zona horaria actual. Esto no sucede con DATETIME.
En MySQL Workbench, una definición del tipo TIMESTAMP luce así:
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.
Con estos formatos, encontrarás la versatilidad que requieres para almacenar y administrar tus horas y fechas, manteniendo el control y la flexibilidad necesarios, sobre todo si deseas manejar zonas horarias o solo fechas y horas establecidas de antemano.
Accede al archivo del código del tema aquí.
En esta experiencia de aprendizaje, obtuviste los conocimientos sobre cómo utilizar las fechas o parte de ellas para cubrir tus necesidades de información. Estos cálculos, a veces complejos, se facilitan con DATE, sus formatos y especificaciones. Asegúrate de experimentar con ellos, aunque también es importante que, al almacenar tus datos, se conserven íntegros y completos en el formato adecuado.
Asegúrate de:
Tecmilenio no guarda relación alguna con las marcas mencionadas como ejemplo. Las marcas son propiedad de sus titulares conforme a la legislación aplicable, estas se utilizan con fines académicos y didácticos, por lo que no existen fines de lucro, relación publicitaria o de patrocinio.
Los siguientes enlaces son externos a la Universidad Tecmilenio, al acceder a ellos considera que debes apegarte a sus términos y condiciones.
Lecturas
Videos
Tecmilenio no guarda relación alguna con las marcas mencionadas como ejemplo. Las marcas son propiedad de sus titulares conforme a la legislación aplicable, estas se utilizan con fines académicos y didácticos, por lo que no existen fines de lucro, relación publicitaria o de patrocinio.
La obra presentada es propiedad de ENSEÑANZA E INVESTIGACIÓN SUPERIOR A.C. (UNIVERSIDAD TECMILENIO), protegida por la Ley Federal de Derecho de Autor; la alteración o deformación de una obra, así como su reproducción, exhibición o ejecución pública sin el consentimiento de su autor y titular de los derechos correspondientes es constitutivo de un delito tipificado en la Ley Federal de Derechos de Autor, así como en las Leyes Internacionales de Derecho de Autor.
El uso de imágenes, fragmentos de videos, fragmentos de eventos culturales, programas y demás material que sea objeto de protección de los derechos de autor, es exclusivamente para fines educativos e informativos, y cualquier uso distinto como el lucro, reproducción, edición o modificación, será perseguido y sancionado por UNIVERSIDAD TECMILENIO.
Queda prohibido copiar, reproducir, distribuir, publicar, transmitir, difundir, o en cualquier modo explotar cualquier parte de esta obra sin la autorización previa por escrito de UNIVERSIDAD TECMILENIO. Sin embargo, usted podrá bajar material a su computadora personal para uso exclusivamente personal o educacional y no comercial limitado a una copia por página. No se podrá remover o alterar de la copia ninguna leyenda de Derechos de Autor o la que manifieste la autoría del material.