FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour CALCULAR MESES ENTRE 2 PERIODOS- SOLUCIONADO
Posts: 537
Joined: Mon Jan 16, 2006 03:42 PM
CALCULAR MESES ENTRE 2 PERIODOS- SOLUCIONADO
Posted: Thu Aug 03, 2017 01:42 AM

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

Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: CALCULAR MESES ENTRE 2 PERIODOS
Posted: Thu Aug 03, 2017 07:04 AM

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

Dios no está muerto...



Gracias a mi Dios ante todo!
Posts: 226
Joined: Sun May 13, 2012 07:52 AM
Re: CALCULAR MESES ENTRE 2 PERIODOS
Posted: Thu Aug 03, 2017 03:07 PM

algo do tipo:
d1 := ctod("01/01/2016")
d2 := ctod("01/01/2017")
alert((d2-d1)/30)

FWH2008 | xHarbour | BCC74 | SQLRDD
Posts: 537
Joined: Mon Jan 16, 2006 03:42 PM
Re: CALCULAR MESES ENTRE 2 PERIODOS
Posted: Thu Aug 03, 2017 04:22 PM
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
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: CALCULAR MESES ENTRE 2 PERIODOS
Posted: Thu Aug 03, 2017 04:59 PM

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 )

Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo

El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 537
Joined: Mon Jan 16, 2006 03:42 PM
Re: CALCULAR MESES ENTRE 2 PERIODOS
Posted: Thu Aug 03, 2017 07:19 PM

cnavarro, lo que quiero es consrevar el dia en el mes anterior

saludos

Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: CALCULAR MESES ENTRE 2 PERIODOS
Posted: Thu Aug 03, 2017 08:17 PM
Algo asi?

Code (fw): Select all Collapse
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
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: CALCULAR MESES ENTRE 2 PERIODOS
Posted: Fri Aug 04, 2017 03:17 PM
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... :-)

Manejadores de fechas en mysql

https://dev.mysql.com/doc/refman/5.7/en ... eriod-diff
Dios no está muerto...



Gracias a mi Dios ante todo!
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: CALCULAR MESES ENTRE 2 PERIODOS
Posted: Fri Aug 04, 2017 03:45 PM

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

Dios no está muerto...



Gracias a mi Dios ante todo!
Posts: 537
Joined: Mon Jan 16, 2006 03:42 PM
Re: CALCULAR MESES ENTRE 2 PERIODOS
Posted: Mon Aug 07, 2017 11:38 PM

muchs gracias resulto todo bien

saludos

Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: CALCULAR MESES ENTRE 2 PERIODOS
Posted: Tue Aug 08, 2017 12:27 AM
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... :-)
Dios no está muerto...



Gracias a mi Dios ante todo!

Continue the discussion