[C con Clase] Consulta mysql
Carlos Chianalino
cchianalino en gmail.com
Jue Sep 27 06:53:45 CEST 2018
Hola a todos actualizo como segui con esto, en otro fore alguien me ayudo
tambien con el siguiente codigo que comparto
-------------------------------------------------
1. DELIMITER //
2. DROP FUNCTION IF EXISTS juevesPasado;
3. CREATE FUNCTION juevesPasado() RETURNS DATE
4. BEGIN
5. DECLARE fecha DATE DEFAULT CURRENT_DATE();
6. WHILE DAYNAME(fecha) <> 'Thursday' DO
7. SET fecha = DATE_SUB(fecha, INTERVAL 1 DAY);
8. END WHILE;
9. RETURN fecha;
10. END //
11. DELIMITER ;
12.
13. DELIMITER //
14. DROP FUNCTION IF EXISTS juevesProximo;
15. CREATE FUNCTION juevesProximo() RETURNS DATE
16. BEGIN
17. DECLARE fecha DATE DEFAULT CURRENT_DATE();
18. WHILE DAYNAME(fecha) <> 'Thursday' DO
19. SET fecha = DATE_ADD(fecha, INTERVAL 1 DAY);
20. END WHILE;
21. RETURN fecha;
22. END //
23. DELIMITER ;
24.
25. SELECT * FROM datos WHERE fecha BETWEEN juevesPasado() AND
juevesProximo();
-------------------------------
yo lo probe y no pude hacerlo funcionar, si tome su logica y lo aplique
desde PHP asi que les dejo lo que le comente al usuario que me ayudo en el
foro y el codigo PHP que utilice.
------------------------------
Hola EdePCal final no he podido lograr hacerlo desde mysql (si tome la
logica que planteaste y lo realice desde php)
Todos los ";" (salvo del del DELIMITER) me daban error - "caracter
inesperado"
Al quitarlos, CREATE me da el siguiente mensaje de error - "se econtro una
nueva declaracion, pero no hay delimitado entre este y el anterior."
AL incorporar un DELIMITER para separar DROP de CREATE y ejecutar la
consulta
"#1064 - You have an error in your SQL syntax; check the manual that
corresponds to your MariaDB server version for the right syntax to use near
'WHILE DAYNAME(fecha) <> 'Thursday' DO
SET fecha = DATE_SUB(fecha, INTERVAL ' at line 4"
Probe borrando DROP y el error 1064 se repite.
voy a leer más en el manual porque esta claro que algo se me escapa.
-----------------------------------------------------------------------------
PHP
$juevesPasado = date('Y-m-d');
$dia_fecha = date('l');
while ($dia_fecha != 'Thursday') {
//si hoy no es jueves le resto un día a la fecha
$juevesPasado = strtotime('-1 day', strtotime($juevesPasado));
$juevesPasado = date('Y-m-d', $juevesPasado);
//resto un día al dia de la semana
$dia_fecha = strtotime('-1 day', strtotime($juevesPasado));
$dia_fecha = date('l', $juevesPasado);
}
$juevesProximo = date('Y-m-d');
$dia_fecha_futuro = date('l');
while ($dia_fecha_futuro != 'Thursday') {
//si hoy no es jueves le sumo un día a la fecha
$juevesProximo = strtotime('+1 day', strtotime($juevesProximo));
$juevesProximo = date('Y-m-d', $juevesProximo);
//sumo un día al dia de la semana
$dia_fecha_futuro = strtotime('+1 day',
strtotime($juevesProximo));
$dia_fecha_futuro = date('l', $juevesProximo);
}
//si hoy es jueves - $juevesPasado = hoy y $juevesProximo = hoy + 7
dias
if ($dia_fecha == 'Thursday') {
$juevesPasado = date('Y-m-d');
$juevesProximo = strtotime('+7 day', strtotime($juevesProximo));
$juevesProximo = date('Y-m-d', $juevesProximo);
}
//consulta mysql
$vencimiento_semanal = "SELECT SUM(MONTO) AS vencimiento_semana FROM
cheques WHERE FECHA_COBRO BETWEEN '$juevesPasado' AND '$juevesProximo' AND
ID_ESTADO = 1 AND ID_TIPO = 1";
fin PHP -------------------------------------------------------
Muchas gracias por la ayuda voy intentar dar con la solucion, me interesa
también saber hacerlo desde mysql.
----------------------------------------------------------------------------------
Steven muchas gracias al igual que Francisco José por su tiempo !
El mar., 25 sept. 2018 a las 18:26, Davidson, Steven (<srd4121 en njit.edu>)
escribió:
> Hola Carlos,
>
> Ante todo, bienvenido a la lista de correo-e.
>
> Si sabes las fechas exactas entre ambos jueves, entonces Francisco José te
> ha dado la respuesta correcta. Sin embargo, si quieres saber los jueves con
> respecto a la fecha actual, cuando realices la consulta, entonces necesitas
> construir las cotas inferior y superior para describir el intervalo.
>
> Puedes usar la función 'CURRENT_DATE()' o 'CURDATE()'; también puedes usar
> la constante, 'CURRENT_DATE',para conseguir la fecha actual. Puedes usar
> 'DAYOFWEEK()' para conseguir el día de la semana de la fecha actual como un
> número, donde 1 representa Domingo y obviamente 7 representaría Sábado.
> Como Jueves es 5, podemos calcular cuántos días tenemos que restar a la
> fecha actual para conseguir la fecha del jueves de la semana pasada: -7 + 5
> - día. Asimismo, calculamos la fecha del jueves de la siguiente semana: 7 +
> 5 - día.
>
> Espero que esto te sirva.
>
> Steven
>
>
> On Tue, Sep 25, 2018 at 12:46 PM Carlos Chianalino <cchianalino en gmail.com>
> wrote:
>
>> Hola a todos es mi primer mail en la lista, espero este activa aun.
>> Necesito si alguien puede ayudarme con esto.
>> tengo una bd en myslq en una de las tablas registros documentos con campo
>> fecha y necesito hacer una consulta a la tabla con el siguiente formato
>>
>> SELECT* FROM documentos WHERE fecha BETWEEN (jueves pasado) AND (jueves
>> proximo).
>>
>> desde ya muchas gracias !
>>
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20180927/63fa91d4/attachment-0001.html>
Más información sobre la lista de distribución Cconclase