Comparar varios campos para obtener fecha mas reciente
Publicado por yaney (31 intervenciones) el 12/04/2018 17:02:42
Hola a todos
Tengo la siguiente consulta para listar registros cuyos campos de fecha al compararlos con la fecha de hoy hayan pasado 30 dias y menos de 40 días.
La tabla lo que hace es almacenar citas para hacer un determinado trabajo, donde a veces la cita se debe hacer en varias sesiones, por eso son 4 campos de fecha.
Si la cita se hizo en 2 sesiones, habrán dos campos fecha con datos, y dos campos fecha cuyo valor será 00-00-0000 porque no se llenaron, si se hizo en 4 sesiones, los 4 campos tendrán el dato de la fecha.
Debo obtener el campo de la última cita (que sería la fecha más reciente) y calcular que hayan pasado 30 días desde esa fecha
Qué función me permite obtener ese resultado?
mysql> SELECT appuntamento.num_ordine,cliente.cognome,cliente.nome,cliente.idcliente,DATEDIFF(appuntamento.sed1,Now())as sed1,DATEDIFF(appuntamento.sed2,Now())as sed2,DATEDIFF(appuntamento.sed3,Now())as sed3,DATEDIFF(appuntamento.sed4,Now())as sed4,DATE_FORMAT(appuntamento.sed1, '%d-%m-%Y') AS sed1a,DATE_FORMAT(appuntamento.sed2, '%d-%m-%Y') AS sed2a,DATE_FORMAT(appuntamento.sed3, '%d-%m-%Y') AS sed3a,DATE_FORMAT(appuntamento.sed4, '%d-%m-%Y') AS sed4a,appuntamento.remarketing FROM cliente inner join appuntamento on appuntamento.clienteid=cliente.idcliente where remarketing like 'si' AND ((DATEDIFF(Now(), appuntamento.sed1) >= 30 and DATEDIFF(Now(), appuntamento.sed1) <= 80) OR (DATEDIFF(Now(), appuntamento.sed2) >= 30 and DATEDIFF(Now(), appuntamento.sed2) <= 80) OR (DATEDIFF(Now(), appuntamento.sed3) >= 30 and DATEDIFF(Now(), appuntamento.sed3) <= 80) OR (DATEDIFF(Now(), appuntamento.sed4) >= 30 and DATEDIFF(Now(), appuntamento.sed4) <= 80)) order by operatore;
Saludos y gracias
Tengo la siguiente consulta para listar registros cuyos campos de fecha al compararlos con la fecha de hoy hayan pasado 30 dias y menos de 40 días.
La tabla lo que hace es almacenar citas para hacer un determinado trabajo, donde a veces la cita se debe hacer en varias sesiones, por eso son 4 campos de fecha.
Si la cita se hizo en 2 sesiones, habrán dos campos fecha con datos, y dos campos fecha cuyo valor será 00-00-0000 porque no se llenaron, si se hizo en 4 sesiones, los 4 campos tendrán el dato de la fecha.
Debo obtener el campo de la última cita (que sería la fecha más reciente) y calcular que hayan pasado 30 días desde esa fecha
Qué función me permite obtener ese resultado?
mysql> SELECT appuntamento.num_ordine,cliente.cognome,cliente.nome,cliente.idcliente,DATEDIFF(appuntamento.sed1,Now())as sed1,DATEDIFF(appuntamento.sed2,Now())as sed2,DATEDIFF(appuntamento.sed3,Now())as sed3,DATEDIFF(appuntamento.sed4,Now())as sed4,DATE_FORMAT(appuntamento.sed1, '%d-%m-%Y') AS sed1a,DATE_FORMAT(appuntamento.sed2, '%d-%m-%Y') AS sed2a,DATE_FORMAT(appuntamento.sed3, '%d-%m-%Y') AS sed3a,DATE_FORMAT(appuntamento.sed4, '%d-%m-%Y') AS sed4a,appuntamento.remarketing FROM cliente inner join appuntamento on appuntamento.clienteid=cliente.idcliente where remarketing like 'si' AND ((DATEDIFF(Now(), appuntamento.sed1) >= 30 and DATEDIFF(Now(), appuntamento.sed1) <= 80) OR (DATEDIFF(Now(), appuntamento.sed2) >= 30 and DATEDIFF(Now(), appuntamento.sed2) <= 80) OR (DATEDIFF(Now(), appuntamento.sed3) >= 30 and DATEDIFF(Now(), appuntamento.sed3) <= 80) OR (DATEDIFF(Now(), appuntamento.sed4) >= 30 and DATEDIFF(Now(), appuntamento.sed4) <= 80)) order by operatore;
1
2
3
4
5
6
7
8
9
+------------+---------+-----------+-----------+------+------+------+------+------------+------------+------------+------------+-------------+
| num_ordine | cognome | nome | idcliente | sed1 | sed2 | sed3 | sed4 | sed1a | sed2a | sed3a | sed4a | remarketing |
+------------+---------+-----------+-----------+------+------+------+------+------------+------------+------------+------------+-------------+
| 939 | uddin | rakib | 448 | -69 | -50 | -43 | -6 | 02-02-2018 | 21-02-2018 | 28-02-2018 | 06-04-2018 | si |
| 937 | Gilli | laura | 752 | -70 | -44 | -36 | NULL | 01-02-2018 | 27-02-2018 | 07-03-2018 | 00-00-0000 | si |
| 934 | moretti | christian | 749 | -38 | NULL | NULL | NULL | 05-03-2018 | 00-00-0000 | 00-00-0000 | 00-00-0000 | si |
| 936 | vassura | matilde | 751 | -14 | -31 | NULL | NULL | 29-03-2018 | 12-03-2018 | 00-00-0000 | 00-00-0000 | si |
+------------+---------+-----------+-----------+------+------+------+------+------------+------------+------------+------------+-------------+
4 rows in set (0.00 sec)
Saludos y gracias
Valora esta pregunta
0