SQL - Consulta dia mes anterior dependiendo dia actual

 
Vista:

Consulta dia mes anterior dependiendo dia actual

Publicado por kinetic_brain (4 intervenciones) el 04/08/2009 16:46:30
Hola foro me explico

tengo una consulta IF que pregunta si es dia lunes o día 1 de la semana y pregunto por 1, 2 y 3 dias hacia atras y caso contrario si no es dia 1 (lunes) que solo tome 1 dia hacia atras, el problema lo tengo, por ejemplo ayer 3 de agosto la consulta solo tomo los dias 1 y 2 de agosto pero no el 31 de julio. por favor.

if (select datepart(dw,getdate()))='1'
begin
insert into cambio_1
select distinct Tele_New, Fecha_Emision, '' as Fecha_Alta, '' as Dif_Fecha''
from cambio_m3

where
((fecha_emision = right('0000'+rtrim(cast(year(getdate()-1) as char)),4)+right('00'+rtrim(cast(month(getdate()-1) as char)),2)+right('00'+rtrim(cast(day(getdate()-3) as char)),2))

or (fecha_emision = right('0000'+rtrim(cast(year(getdate()-1) as char)),4)+right('00'+rtrim(cast(month(getdate()-1) as char)),2)+right('00'+rtrim(cast(day(getdate()-2) as char)),2))

or (fecha_emision = right('0000'+rtrim(cast(year(getdate()-1) as char)),4)+right('00'+rtrim(cast(month(getdate()-1) as char)),2)+right('00'+rtrim(cast(day(getdate()-1) as char)),2)))
end
else
begin
insert into cambio_1
select distinct Tele_New, Fecha_Emision, '' as Fecha_Alta, '' as Dif_Fecha''
from cambio_m3
where
(ltrim(rtrim(fecha_emision)) = right('0000'+rtrim(cast(year(getdate()-1) as char)),4)+right('00'+rtrim(cast(month(getdate()-1) as char)),2)+right('00'+rtrim(cast(day(getdate()-1) as char)),2))
end
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

RE:Consulta dia mes anterior dependiendo dia actua

Publicado por Alf (1 intervención) el 19/01/2010 16:35:41
public function getHTMLTablaPlanPago($valorParametro = 1,$diaPago =
31) {
$suma = 0;
$codigoHTML = '';

// Estas son las fechas del contrato.
$diaInicio =
date('d',strtotime($this->valores['fecha_inicio']));
$mesInicio =
date('m',strtotime($this->valores['fecha_inicio']));
$annoInicio =
date('Y',strtotime($this->valores['fecha_inicio']));
$diaFin = date('d',strtotime($this->valores['fecha_fin']));
$mesFin = date('m',strtotime($this->valores['fecha_fin']));
$annoFin = date('Y',strtotime($this->valores['fecha_fin']));

//Aca, calcular la diferencia de fechas en meses
$difAnnos = $annoFin - $annoInicio;
$difMeses = ($mesFin - $mesInicio)%12;
$numMeses = $difMeses + 12 * $difAnnos;

$codigoHTML = '<table width="100%" border="0">
<tr class="cell">
<td>Fecha de pago </td>
<td>Monto [$] </td>
</tr>';
$mes = $mesInicio;
$anno = $annoInicio;
$contador = 0;
for ($i=0;$i<=$numMeses;$i++) {
$suma = 0;

$diaFinMes = date('t',strtotime($anno.'-'.$mes.'-01'));
if ($diaPago < $diaFinMes) {
$dia = $diaPago;
}else {
$dia = $diaFinMes;
}

$fechaFinMes = strtotime($dia."-".$mes."-".$anno);
if (date('D', mktime(0,0,0,date('m',$fechaFinMes),
$dia,date('Y',$fechaFinMes))) == 'Sun') {
$diaPagoMes = $dia+1;
if($diaPagoMes>$diaFinMes) {
$diaPagoMes = $diaPagoMes % $diaFinMes;
$fechaPago = mktime(0,0,0,date('m',$fechaFinMes)+1,
$diaPagoMes,date('Y',$fechaFinMes));
}else {
$fechaPago = mktime(0,0,0,date('m',$fechaFinMes),
$diaPagoMes,date('Y',$fechaFinMes));
}
}elseif(date('D', mktime(0,0,0,date('m',$fechaFinMes),
$dia,date('Y',$fechaFinMes))) == 'Sat') {
$diaPagoMes = $dia+2;
if($diaPagoMes>$diaFinMes) {
$diaPagoMes = $diaPagoMes % $diaFinMes;
$fechaPago = mktime(0,0,0,date('m',$fechaFinMes)+1,
$diaPagoMes,date('Y',$fechaFinMes));
}else {
$fechaPago = mktime(0,0,0,date('m',$fechaFinMes),
$diaPagoMes,date('Y',$fechaFinMes));
}
// $fechaPago = mktime(0,0,0,date('m',
$fechaFinMes),$dia-1,date('Y',$fechaFinMes));
}else {
$fechaPago = mktime(0,0,0,date('m',$fechaFinMes),
$dia,date('Y',$fechaFinMes));
}

$colegios = $this->colegios['lista']->getLista();
foreach ($colegios as $colegioID=>$colegioNombre) {
$servicios =
$this->servicios[$colegioID]['lista']->getLista();
foreach($servicios as $servicioID=>$servicioNombre) {
$valorDia =
$this->servicios[$colegioID][$servicioID]['valor']/$diaFinMes;
$servicioInicio =
strtotime($this->servicios[$colegioID][$servicioID]['fecha_inicio']);
$servicioFin =
strtotime($this->servicios[$colegioID][$servicioID]['fecha_fin']);
//Esta es la fecha de pago para este mes
$cuota = mktime(0,0,0,$mes,$dia,$anno);
//if ($mesServicioInicio == $mes AND $annoServicioInicio == $anno) {
if (date('Y-m',$servicioInicio) == date('Y-m',
$cuota)) {
$diaMes = date('j',$servicioInicio);
$suma += $valorDia*($diaFinMes-$diaMes);
}elseif (date('Y-m',$servicioFin) == date('Y-m',
$cuota)) {
$diaMes = date('j',$servicioFin);
$suma += $valorDia*$diaMes;
}elseif ($servicioInicio < $cuota AND $cuota <
$servicioFin) {
$suma += $valorDia * $diaFinMes;
}
}
}
$contador++;
$cuotaPago += $suma;
if ($contador == $valorParametro) {
$codigoHTML .= '<tr>
<td>'.date('d-m-Y',$fechaPago).'</td>
<td>'.number_format($cuotaPago,2,'.','').'</td>
</tr>';
$cuotaPago = 0;
$contador = 0;
}
//}
$mes++;
//$mes = ($mes + 1)%12;
if ($mes%12 == 1) {
$mes = 1;
$anno ++;
}

}
if ($cuotaPago>0) {
$codigoHTML .= '<tr>
<td>'.date('d-m-Y',$fechaPago).'</td>
<td>'.$cuotaPago.'</td>
</tr>';
}
$codigoHTML .= '</table>';

return $codigoHTML;
}
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