CodeGym/Cursos Java/Módulo 4. Working with databases/Funciones de fecha, ejemplos prácticos

Funciones de fecha, ejemplos prácticos

Disponible

Buscando eventos en los últimos 30 días

Otra tarea común es buscar filas que pertenezcan a un rango de fechas específico. En principio, esto no es difícil si las fechas de inicio y finalización del rango son fijas: SQL puede comparar fechas tan bien como números.

Los operadores de comparación se pueden aplicar a las fechas: < , > , <= , etc. Además, hay un operador especial ENTRE que también puede trabajar con fechas. Por ejemplo, escribamos una consulta que seleccione todas las tareas de la tabla de tareas que deben realizarse en el verano de 2022. La solicitud se verá así:

SELECT * FROM task  
WHERE task.deadline BETWEEN '2022-06-01' AND '2022-08-31'

El resultado de esta consulta será:

identificación empleado_id nombre fecha límite
1 1 Arreglar un error en la interfaz 2022-06-01
2 2 Arreglar un error en el backend 2022-06-15
3 5 comprar cafe 2022-07-01
4 5 comprar cafe 2022-08-01

Pero qué escribir en la solicitud si queremos obtener tareas, por ejemplo, de los últimos 30 días. Donde los últimos 30 días están directamente relacionados con el tiempo de ejecución de la consulta. Es decir, si la consulta se ejecuta el 25 de julio, debe seleccionar las fechas del 25 de junio al 24 de julio. ¿Cómo vincular un rango de fechas a la hora actual?

Para hacer esto, use la función de adición de fecha:

DATE_ADD (date, INTERVAL expression units)

Creo que será más fácil de explicar con algunos ejemplos:

# Pedido Resultado
1 FECHA_AÑADIR('2022-06-04', INTERVALO 5 DÍA) 2022-06-09
2 FECHA_AÑADIR('2022-06-04', INTERVALO 4 SEMANA) 2022-07-02
3 FECHA_AÑADIR('2022-06-04', INTERVALO 2 MES) 2022-08-04
4
5 FECHA_SUB('2022-06-04', INTERVALO 5 DÍA) 2022-05-30
6 DATE_SUB('2022-06-04', INTERVALO 4 SEMANA) 2022-05-07
7 FECHA_SUB('2022-06-04', INTERVALO 2 MES) 2022-04-04

Por cierto, a una fecha determinada también se le puede restar un cierto número de días, semanas, meses y años.

Y si volvemos a nuestra solicitud, para obtener datos de los últimos 30 días, entonces necesitamos dos fechas en este rango:

  • CURDATE() - fin de rango
  • DATE_SUB( CURDATE() , INTERVAL 30 DAY) - inicio del rango

La solicitud se verá así:

SELECT * FROM task WHERE task.deadline  
BETWEEN DATE_SUB( CURDATE() , INTERVAL 30 DAY) AND CURDATE() 

El resultado de esta consulta será así (tengo hoy 4 de junio de 2022):

identificación empleado_id nombre fecha límite
1 1 Arreglar un error en la interfaz 2022-06-01

Cómo encontrar la diferencia entre dos fechas

Y otra característica útil. A veces es posible que necesite calcular la diferencia entre dos fechas en días. Para hacer esto, SQL tiene una función especial: DATEDIFF ().

Es muy fácil trabajar con ella:

DATEDIFF (date 1, date 2)

La segunda fecha simplemente se resta de la primera fecha. Si date2 viene después de date1, entonces el resultado será negativo.

Por cierto, podemos reescribir nuestra consulta anterior usando la función DATEDIFF(). Necesitamos seleccionar todas las tareas de la tabla de tareas cuya fecha límite difiere de la fecha actual en no más de 30 días. Así es como se vería esa solicitud:

SELECT * FROM task WHERE DATEDIFF(task.deadline, CURDATE() ) < 30

El resultado de esta consulta será así (tengo hoy 4 de junio de 2022):

identificación empleado_id nombre fecha límite
1 1 Arreglar un error en la interfaz 2022-06-01
2 2 Arreglar un error en el backend 2022-06-15
3 5 comprar cafe 2022-07-01

Esta vez, SQL encontró hasta tres filas. Piensa por qué la última vez había una línea y esta vez hay tres.

1
Tarea
Módulo 4. Working with databases,  nivel 4lección 3
Bloqueada
task0427
task0427
1
Tarea
Módulo 4. Working with databases,  nivel 4lección 3
Bloqueada
task0428
task0428
1
Tarea
Módulo 4. Working with databases,  nivel 4lección 3
Bloqueada
task0429
task0429
1
Tarea
Módulo 4. Working with databases,  nivel 4lección 3
Bloqueada
task0430
task0430
1
Tarea
Módulo 4. Working with databases,  nivel 4lección 3
Bloqueada
task0431
task0431
1
Tarea
Módulo 4. Working with databases,  nivel 4lección 3
Bloqueada
task0432
task0432
1
Tarea
Módulo 4. Working with databases,  nivel 4lección 3
Bloqueada
task0433
task0433
Comentarios
  • Populares
  • Nuevas
  • Antiguas
Debes iniciar sesión para dejar un comentario
Esta página aún no tiene comentarios