Page 1 of 1

triguer para buscar los dias entre dos fechas para insertarlo a una bd de pm

Posted: Mon Feb 13, 2017 10:14 am
by Gerardo
Buen dia necesito un triguer que al ser ejecutado me ingrese en la base e PM el valor del calculo de dias de dos fechas muchas gracias.

Re: triguer para buscar los dias entre dos fechas para insertarlo a una bd de pm

Posted: Mon Feb 13, 2017 10:55 am
by amosbatto
Para conseguir el numero de dias entre dos fechas, tienes que convertirlas a timestamps y subtraerlas. Timestamps estan en segundos, entonces hay que dividir por 24*60*60 para conseguir el numero de dias.
Code: Select all
if (isset(@@fecha1) and !empty(@@fecha1) and isset(@@fecha2) and !empty(@@fecha2)) {
   $fecha1 = strtotime(@@fecha1);
   $fecha2 = strtotime(@@fecha2);
   $dias = ($fecha2 - $fecha1) / (24*60*60);
   
   $sql = "INSERT INTO PMT_MITABLA (CAMPOX, CAMPOY, CAMPO_DIAS) VALUES ('A', 'B', $dias)";
   executeQuery($sql);
}
Si quieres rondear el numero de dias al un intero, puedes usar round():
Code: Select all
   $dias = round($dias);

Si quieres calcular el numero de dias sin incluir la hora en el calculo, puedes quitar la hora de los datetimes con substr().
Code: Select all
if (isset(@@fecha1) and !empty(@@fecha1) and isset(@@fecha2) and !empty(@@fecha2)) {
   $fecha1 = strtotime( substr(@@fecha1, 0, 10) );
   $fecha2 = strtotime( substr(@@fecha2, 0, 10) );
   $dias = (int) (($fecha2 - $fecha1) / (24*60*60));

Re: triguer para buscar los dias entre dos fechas para insertarlo a una bd de pm

Posted: Mon Feb 13, 2017 1:23 pm
by Gerardo
Muchas gracias por su pronta respuesta!!
en caso de que la fechas que quiero restar sean la fecha actual - la fecha de inicio de año como ser 1/1/2017

Re: triguer para buscar los dias entre dos fechas para insertarlo a una bd de pm

Posted: Mon Feb 13, 2017 1:33 pm
by Gerardo
Sin extraerlas de un date time sino asi en duro la fecha actual menos la fecha inicial del año, hacer el calculo de los dias para insertarlo a la bd asi cuando aparezca la tabla ya este acualizado el registro de dias.

Re: triguer para buscar los dias entre dos fechas para insertarlo a una bd de pm

Posted: Mon Feb 13, 2017 4:13 pm
by amosbatto
Este código calcula el número de días desde el comienzo del año actual:
Code: Select all
$hoy = strtotime(date("Y-m-d"));
$anoNuevo = strtotime(date("Y-01-01"));
$diasDiferencia = ($hoy - $anoNuevo) / (24*60*60);     

Re: triguer para buscar los dias entre dos fechas para insertarlo a una bd de pm

Posted: Mon Feb 13, 2017 7:00 pm
by Gerardo
Muchas Gracias!!!

Re: triguer para buscar los dias entre dos fechas para insertarlo a una bd de pm

Posted: Mon Jan 22, 2018 12:58 pm
by milagrosmaria16
Buenos días,

Tengo una pregunta: Yo quisiera restar fechas también pero sin contar sabado y domingos, tenia este codigo pero no me funciona :(
Code: Select all
//Resta entre fechas sin contar sab y dom
  function cuentaFindes(){
    var inicio = new Date(datDisVac); //Fecha inicial
    var fin = new Date(datHasta); //Fecha final
    var timeDiff = Math.abs(fin.getTime() - inicio.getTime());
    var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24)); //Días entre las dos fechas
    var cuentaFinde = 0; //Número de Sábados y Domingos
    var array = new Array(diffDays);

    for (var i=0; i < diffDays; i++) 
    {
        //0 => Domingo - 6 => Sábado
        if (inicio.getDay() == 1 || inicio.getDay() == 5) {
            cuentaFinde++;
        }
        inicio.setDate(inicio.getDate() + 1);
    }

   return cuentaFinde;
}
Lo estaba usando en la opción FORMULA en el formulario para que el resultado se muestre en un campo.

Si me pudieras ayudar sería genial.

Muchísimas gracias.

Re: triguer para buscar los dias entre dos fechas para insertarlo a una bd de pm

Posted: Wed Jan 24, 2018 12:47 am
by amosbatto
Creo que tu codigo de JavaScript debe funcionar. Si sabes como usarlo en tu DynaForm, debes publicar el archivo .json de tu Dynaform.

En PHP es más facil:
Code: Select all
function number_of_working_days($startDate, $endDate) {
    $workingDays = 0;
    $startTimestamp = strtotime($startDate);
    $endTimestamp = strtotime($endDate);
    for ($i = $startTimestamp; $i <= $endTimestamp; $i = $i + (60 * 60 * 24)) {
        if (date("N", $i) <= 5) $workingDays = $workingDays + 1;
    }
    return $workingDays;
}
Ver: https://stackoverflow.com/questions/450 ... tes-in-php

Re: triguer para buscar los dias entre dos fechas para insertarlo a una bd de pm

Posted: Wed Jan 24, 2018 1:28 am
by amosbatto
Aca es un DynaForm que demuestra como calcular el numero de días entre fechas sin contar los sabados y domingos:
(5.36 KiB) Downloaded 575 times

Re: triguer para buscar los dias entre dos fechas para insertarlo a una bd de pm

Posted: Thu Jan 25, 2018 11:53 am
by milagrosmaria16
Muchas gracias!!!!!!!!!!!!!!!

Re: triguer para buscar los dias entre dos fechas para insertarlo a una bd de pm

Posted: Wed Jun 10, 2020 6:37 pm
by ksbarrientosn
I am using this trigger and I placed it after dynaform but I do not get the count of days
if (isset(@@fecha_solicitud) and !empty(@@fecha_solicitud) and isset(@@fecha_observacion) and !empty(@@fecha_observacion)) {
$fecha1 = strtotime(@@fecha_solicitud);
$fecha2 = strtotime(@@fecha_observacion);
$dias = ($fecha2 - $fecha1) / (24*60*60);


$sql = "INSERT INTO PMT_VENTANILLA_UNICA (ConteoDias1) VALUES ($dias)";
executeQuery($sql);
};


Image

Image