[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