Page 1 of 1

CALCULAR MESES ENTRE 2 PERIODOS- SOLUCIONADO

PostPosted: Thu Aug 03, 2017 1:42 am
by jbrita
Amigo tengo la necesidad de saber cuando meses hay entre 2 periodos :

ejemplo:

04-2017 al 01-2018 hay 9 meses
esos quiero y para cualquier periodo que me sirva (mysql)

saludos

Re: CALCULAR MESES ENTRE 2 PERIODOS

PostPosted: Thu Aug 03, 2017 7:04 am
by joseluisysturiz
Saludos, usa en MySql, saludos... :shock:

TIMESTAMPDIFF
SELECT TIMESTAMPDIFF(MONTH,'2009-05-18','2010-07-29');
http://www.w3resource.com/mysql/date-an ... nction.php

PERIOD_DIFF()
SELECT PERIOD_DIFF(200905,200811);
http://www.w3resource.com/mysql/date-an ... nction.php
https://dev.mysql.com/doc/refman/5.7/en ... eriod-diff

Re: CALCULAR MESES ENTRE 2 PERIODOS

PostPosted: Thu Aug 03, 2017 3:07 pm
by Sistem
algo do tipo:
d1 := ctod("01/01/2016")
d2 := ctod("01/01/2017")
alert((d2-d1)/30)

Re: CALCULAR MESES ENTRE 2 PERIODOS

PostPosted: Thu Aug 03, 2017 4:22 pm
by jbrita
gracias Jose funciono bien... otra consulta mas

si al Generar Cobro
mes 8
Año 2017


12/04/2017 quedaria asi 12/08/2017

pero cuando el dia es mayor al de otro mes:
Generar Cobro
mes 9
Año 2017


31/08/2017 como quedaria aca 31/09/2017 esto quedaria malo ya que septiembre
tiene hasta 30 dias, tendria que ser 30-09-2017


Generar Cobro
mes 2
Año 2017



31/01/2017 como quedaria aca 31/02/2017 esto quedaria malo ya que septiembre
tiene hasta 30 dias, tendría que ser 28-02-2017

en mysql como seria, ya que quiero conservar el dia, pero si el dia del mes anterior es mayor a ahi mi problema

saludos

Re: CALCULAR MESES ENTRE 2 PERIODOS

PostPosted: Thu Aug 03, 2017 4:59 pm
by cnavarro
Tienes la function harbour EoM( dDate ) devuelve el último día del mes dDate. Si lo que se busca el es primer día del mes, Harbour ya tiene una función nativa: BoM( dDate )

Re: CALCULAR MESES ENTRE 2 PERIODOS

PostPosted: Thu Aug 03, 2017 7:19 pm
by jbrita
cnavarro, lo que quiero es consrevar el dia en el mes anterior

saludos

Re: CALCULAR MESES ENTRE 2 PERIODOS

PostPosted: Thu Aug 03, 2017 8:17 pm
by karinha
Algo asi?

Code: Select all  Expand view

Set Date Brit
Set Century On

Use Banco_de_Dados_1
Sele 0
Use Banco_de_Dados_2

Sele Banco_de_Dados_1
While !Eof()
 Grava_dias( Codigo, Data_Inicial, Data_Final )
 Skip
EndDo
Return Nil

Function Grava_Dias( xCodigo, dData_Ini, dData_Fim )
Local i, nQtd_Dias:=0, nQual_Mes:=Month( dData_Ini )
Local dFim_Check:=dData_Ini, lPri_mes:=.t.
Local cAlias:=Alias()
Sele Banco_De_Dados_2
While ( dFim_Check < dData_Fim )
 If Month( dFim_Check ) # ( nQual_Mes )
  Append Blank
  nQtd_Dias:=If(lPri_mes, nQtd_Dias-1, nQtd_Dias)
  Replace Codigo With xCodigo
  Replace Qtd_Dias With nQtd_Dias
  Replace Mes_De_Referencia With Right( DToC( dFim_Check-1 ), 7 )
  lPri_mes:=.f.
  nQtd_Dias:=0
  nQual_Mes:=Month( dFim_Check )
 EndIf
 nQtd_Dias++
 dFim_Check++
 If ( dFim_Check = dData_Fim )
  nQtd_Dias:=Day( dData_Fim )
  Append Blank
  Replace Codigo With xCodigo
  Replace Qtd_Dias With nQtd_Dias
  Replace Mes_De_Referencia With Right( DToC( dFim_Check ), 7 )
  Exit
 Endi
EndDo
Sele cAlias
Retu Nil
 

Re: CALCULAR MESES ENTRE 2 PERIODOS

PostPosted: Fri Aug 04, 2017 3:17 pm
by joseluisysturiz
jbrita wrote:gracias Jose funciono bien... otra consulta mas

si al Generar Cobro
mes 8
Año 2017


12/04/2017 quedaria asi 12/08/2017

pero cuando el dia es mayor al de otro mes:
Generar Cobro
mes 9
Año 2017


31/08/2017 como quedaria aca 31/09/2017 esto quedaria malo ya que septiembre
tiene hasta 30 dias, tendria que ser 30-09-2017


Generar Cobro
mes 2
Año 2017



31/01/2017 como quedaria aca 31/02/2017 esto quedaria malo ya que septiembre
tiene hasta 30 dias, tendría que ser 28-02-2017

en mysql como seria, ya que quiero conservar el dia, pero si el dia del mes anterior es mayor a ahi mi problema

saludos


Saludos, us SELECT PERIOD_DIFF(201704,201708), eso te toma en cuenta solo los meses, solo debes extraer el año y el mes, concatenarlos antes y se lo pasas a esta funcion...saludos... :shock:

Manejadores de fechas en mysql

https://dev.mysql.com/doc/refman/5.7/en ... eriod-diff

Re: CALCULAR MESES ENTRE 2 PERIODOS

PostPosted: Fri Aug 04, 2017 3:45 pm
by joseluisysturiz
Aca te dejo una forma mas exacta usando la fecha completa, de la forma que te lo coloco ya lo probe con diferentes fechas, has las pruebas de fuego...saludos... :shock:

SELECT PERIOD_DIFF( DATE_FORMAT('2017-04-15', '%Y%m'), DATE_FORMAT('2018-06-12', '%Y%m') )

http://mysql.conclase.net/curso/?sqlfun=PERIOD_DIFF

http://www.w3resource.com/mysql/date-an ... nction.php

Re: CALCULAR MESES ENTRE 2 PERIODOS

PostPosted: Mon Aug 07, 2017 11:38 pm
by jbrita
muchs gracias resulto todo bien

saludos

Re: CALCULAR MESES ENTRE 2 PERIODOS

PostPosted: Tue Aug 08, 2017 12:27 am
by joseluisysturiz
jbrita wrote:muchs gracias resulto todo bien

saludos

Ok, era la idea, si puedes colocale al tema..SOLUCIONADO para que otros usuarios sepan y consigan solucion rapidamente si les pasa lo mismo, saludos, gracias... :shock: