SQL - Consulta entre fechas

 
Vista:
sin imagen de perfil
Val: 12
Ha aumentado su posición en 2 puestos en SQL (en relación al último mes)
Gráfica de SQL

Consulta entre fechas

Publicado por Juan (7 intervenciones) el 16/08/2018 18:40:49
Hola a todos, tengo que hacer una consulta en la que solo me de los registros donde el articulo alquilado este alquilado mas de tres días. y no se como puedo hacerlo. Alguien que me ayude?

SELECT ALQUILER.NIF, ALQUILER.IDENTIFICADOR, ALQUILER.FECHA, WHERE ???

Muchas Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Consulta entre fechas

Publicado por Leonardo Josué (1173 intervenciones) el 16/08/2018 20:22:09
Hola Juan:

en primer lugar: ¿con qué BD's estás trabajando? cada DBMS maneja una sintaxis distinta para el manejo de fechas por lo tanto debes de mencionar siempre este dato para que obtengas una mejor respuesta de los foristas.

en segundo lugar: ¿Qué información guardas en tu tabla? es decir, no nos dices cómo es que pretendes hacer el cálculo que necesitas. si guardas fechas dinos a qué se refiere cada fecha y pon datos de ejemplo. a partir de esos datos dinos qué es lo que esperas obtener como salida.

Postea también cualquier intento de consulta que hayas realizado, no importa si está mal. El objetivo es que nos muestres que al menos has hecho el intento de obtener la consulta por tu cuenta.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 12
Ha aumentado su posición en 2 puestos en SQL (en relación al último mes)
Gráfica de SQL

Consulta entre fechas

Publicado por Juan (7 intervenciones) el 17/08/2018 08:23:43
Buenos dias Leonardo Jose, la BD es MySql, lo que intento hacer es hacer una lista con todos los alquileres que están activos mas de tres días.La tabla Alquiler tiene tres atributos: NIF, IDENTIFICADOR y FECHA. El atributo FECHA es el día en que se alquilo el articulo.

Lo he intentado varias veces:
SELECT ALQUILER.NIF, ALQUILER.IDENTIFICADOR, ALQUILER.FECHA, WHERE DATEDIFF(NOW,ALQUILER.FECHA) > 3
SELECT ALQUILER.NIF, ALQUILER.IDENTIFICADOR, ALQUILER.FECHA, WHERE timestampdiff(DAY, ALQUILER.FECHA, now()) > 3

Espero que me podais ayudar.
Muchas Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Consulta entre fechas

Publicado por Leonardo Josué (1173 intervenciones) el 17/08/2018 16:29:23
Hola de nuevo Juan:

Tienes varios horrores (no errores) en tu consulta:

1. Una vez que terminas de listar los campos que quieres listar YA NO COLOCAS UNA COMA, ya que la coma indica que vas a continuar listando más campos.

2. Después del ultimo campo que quieras listar DEBE DE IR LA SECCION FROM y los JOIN's si es que lo necesitas:

3. Después de que listas todas las tablas que necesitas en el FROM y haces los JOIN's necesarios, entonces colocas la CLAUSULA WHERE:

1
2
3
4
5
6
SELECT campo1, campo2, campo3  <-- Aquí ya no pones coma
FROM tabla
INNER JOIN tabla2 ON
...
WHERE --> Después del FROM y los JOINS (si es que necesitas hacerlos) pones el WHERE
condicion1

4. La función NOW en MySQL debe llevar paréntesis, pero ojo, esta función maneja también la HORA. si sólo quieres comparar LA FECHA, entonces es mejor usar CURDATE():

1
2
3
4
5
6
7
mysql> SELECT now(), curdate();
+---------------------+------------+
| now()               | curdate()  |
+---------------------+------------+
| 2018-08-17 09:26:04 | 2018-08-17 |
+---------------------+------------+
1 row in set (0.07 sec)

entonces, deberías de tener algo así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
mysql> SELECT * FROM ALQUILER;
+------+---------------+------------+
| NIF  | IDENTIFICADOR | FECHA      |
+------+---------------+------------+
|    1 | uno           | 2018-08-14 |
|    2 | dos           | 2018-08-15 |
|    3 | tres          | 2018-08-16 |
|    4 | cuatro        | 2018-08-17 |
+------+---------------+------------+
4 rows in set (0.04 sec)
 
mysql> SELECT
    ->    ALQUILER.NIF,
    ->    ALQUILER.IDENTIFICADOR,
    ->    ALQUILER.FECHA,
    ->    DATEDIFF(CURDATE(),ALQUILER.FECHA)
    -> FROM ALQUILER;
+------+---------------+------------+--------------------------------+
| NIF  | IDENTIFICADOR | FECHA      | DATEDIFF(CURDATE(),ALQUILER.FECHA) |
+------+---------------+------------+--------------------------------+
|    1 | uno           | 2018-08-14 |                              3 |
|    2 | dos           | 2018-08-15 |                              2 |
|    3 | tres          | 2018-08-16 |                              1 |
|    4 | cuatro        | 2018-08-17 |                              0 |
+------+---------------+------------+--------------------------------+
4 rows in set (0.00 sec)

Cambia esto al WHERE y tendrás la respuesta que necesitas.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 12
Ha aumentado su posición en 2 puestos en SQL (en relación al último mes)
Gráfica de SQL

Consulta entre fechas

Publicado por Juan (7 intervenciones) el 17/08/2018 17:55:58
Muchas gracias Leonardo Josue. Me funciona perfectamente.

De verdad muchas Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar