3.1 Lista de funciones para trabajar con fecha y hora
La fecha y la hora son uno de los tipos de datos más comunes almacenados en las bases de datos. Es por eso que la lista de funciones para trabajar con ellos es muy grande. Aquí están los más populares:
# | Función | Descripción |
---|---|---|
1 | CURDATE() | Devuelve la fecha actual |
2 | CURTIME() | Devuelve la hora actual |
3 | NOW(), LOCALTIME() | Devuelve la fecha actual y la hora actual |
4 | YEAR() | Devuelve el año a partir de la fecha |
5 | MONTH() | Devuelve el mes de una fecha. |
6 | DAY(), DAYOFMONTH() | Devuelve el día a partir de una fecha. |
7 | HOUR() | Devuelve solo horas desde el tiempo |
8 | MINUTE() | Anuncia los minutos del tiempo |
9 | SECOND() | Devuelve segundos desde el tiempo |
10 | DAYNAME() | Devuelve el nombre del día de la semana: Lunes, ... |
11 | MONTHNAME() | Devuelve el nombre del mes: enero,... |
12 | WEEK() | Devuelve la semana de una fecha. |
13 | WEEKDAY() | Devuelve el número del día de la semana: lunes - 0, martes - 1 |
14 | WEEKOFYEAR() | Devuelve el número de semana del año. |
15 | DAYOFWEEK() | Devuelve el número del día de la semana: domingo - 1, lunes - 2 |
16 | DAYOFYEAR() | Devuelve el día del año: 1-366 |
17 | DATE() | Devuelve solo la fecha de un objeto "datetime" |
18 | ADDDATE() | Agrega días a una fecha |
19 | SUBDATE() | Resta días de una fecha |
20 | ADDTIME() | Agrega tiempo a tiempo |
21 | SUBTIME() | Resta tiempo de tiempo |
Agrupé deliberadamente las funciones en pequeños grupos para que sea más fácil entender cómo trabajar con ellas. A continuación consideraremos una función de cada grupo.
Puede encontrar una lista completa de funciones para trabajar con fecha y hora en el enlace: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html
3.2 Funciones de llamada
Por cierto, dado que estamos aprendiendo tantas funciones, creo que es útil mencionar que el operador SELECT
no tiene que usarse con FROM
. Puede devolver el valor de cualquier expresión. La vista general de la cual está dada por la plantilla:
SELECT expression
Y si desea llamar a alguna función, debe escribir un código como:
SELECT function(options)
A continuación daré algunos ejemplos del funcionamiento del operador SELECT
sin recurrir a tablas:
# | Pedido | Resultado |
---|---|---|
1 | SELECT 1+1 | 2 |
2 | SELECT 13 MOD 5 | 3 |
3 | SELECT RAND() | 0.20771444235715497 |
4 | SELECT CURDATE() | 2022-06-04 |
5 | SELECT CURTIME() | 00:06:02 |
6 | SELECT NOW() | 2022-06-04 00:06:43 |
Y, como puede ver, en la tabla anterior, para obtener la fecha y la hora actuales, solo necesita usar una de las funciones:
CURDATE()
- fecha actual;CURTIME()
- tiempo actual;NOW()
– fecha y hora actuales.
3.3 Agrupación de datos por año y mes
Recordemos nuestra tabla de tareas con tareas para empleados. Intentemos agrupar las tareas de esta tabla por años. Para ello, utilizamos la función YEAR()
, que devuelve el año a partir de la fecha que se le pasó.
La primera versión de nuestra consulta se verá así:
SELECT
id,
employee_id ,
name,
YEAR(deadline) AS year,
deadline
FROM task
El resultado de esta consulta será:
identificación | ID de empleado | nombre | año | fecha límite |
---|---|---|---|---|
1 | 1 | Arreglar un error en la interfaz | 2022 | 2022-06-01 |
2 | 2 | Arreglar un error en el backend | 2022 | 2022-06-15 |
3 | 5 | comprar cafe | 2022 | 2022-07-01 |
4 | 5 | comprar cafe | 2022 | 2022-08-01 |
5 | 5 | comprar cafe | 2022 | 2022-09-01 |
6 | (NULL) | limpiar la oficina | (NULL) | (NULL) |
7 | 4 | Disfruta la vida | (NULL) | (NULL) |
8 | 6 | Disfruta la vida | (NULL) | (NULL) |
Podemos ver que todas las filas tienen el mismo año, así que usemos dos campos: año y mes. La segunda versión de nuestra consulta se verá así:
SELECT
id,
employee_id ,
name,
YEAR(deadline) AS year,
MONTH(deadline) AS month,
deadline
FROM task
El resultado de esta consulta será:
identificación | ID de empleado | nombre | año | mes | fecha límite |
---|---|---|---|---|---|
1 | 1 | Arreglar un error en la interfaz | 2022 | 6 | 2022-06-01 |
2 | 2 | Arreglar un error en el backend | 2022 | 6 | 2022-06-15 |
3 | 5 | comprar cafe | 2022 | 7 | 2022-07-01 |
4 | 5 | comprar cafe | 2022 | 8 | 2022-08-01 |
5 | 5 | comprar cafe | 2022 | 9 | 2022-09-01 |
6 | (NULL) | limpiar la oficina | (NULL) | (NULL) | (NULL) |
7 | 4 | Disfruta la vida | (NULL) | (NULL) | (NULL) |
8 | 6 | Disfruta la vida | (NULL) | (NULL) | (NULL) |
No te diré cómo agrupar tareas por año y mes; ya estudiaste esto: usa el operador GROUP BY
.