CALCULAR MESES ENTRE 2 PERIODOS- SOLUCIONADO

CALCULAR MESES ENTRE 2 PERIODOS- SOLUCIONADO

Postby jbrita » Thu Aug 03, 2017 1: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
Last edited by jbrita on Thu Aug 10, 2017 1:11 pm, edited 1 time in total.
jbrita
 
Posts: 485
Joined: Mon Jan 16, 2006 3:42 pm

Re: CALCULAR MESES ENTRE 2 PERIODOS

Postby joseluisysturiz » Thu Aug 03, 2017 7: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!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: CALCULAR MESES ENTRE 2 PERIODOS

Postby Sistem » Thu Aug 03, 2017 3:07 pm

algo do tipo:
d1 := ctod("01/01/2016")
d2 := ctod("01/01/2017")
alert((d2-d1)/30)
FWH2008 | xHarbour | BCC74 | SQLRDD
User avatar
Sistem
 
Posts: 226
Joined: Sun May 13, 2012 7:52 am

Re: CALCULAR MESES ENTRE 2 PERIODOS

Postby jbrita » Thu Aug 03, 2017 4: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
jbrita
 
Posts: 485
Joined: Mon Jan 16, 2006 3:42 pm

Re: CALCULAR MESES ENTRE 2 PERIODOS

Postby cnavarro » Thu Aug 03, 2017 4: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
User avatar
cnavarro
 
Posts: 6498
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: CALCULAR MESES ENTRE 2 PERIODOS

Postby jbrita » Thu Aug 03, 2017 7:19 pm

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

saludos
jbrita
 
Posts: 485
Joined: Mon Jan 16, 2006 3:42 pm

Re: CALCULAR MESES ENTRE 2 PERIODOS

Postby karinha » Thu Aug 03, 2017 8:17 pm

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
 
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7154
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: CALCULAR MESES ENTRE 2 PERIODOS

Postby joseluisysturiz » Fri Aug 04, 2017 3: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... :shock:

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!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: CALCULAR MESES ENTRE 2 PERIODOS

Postby joseluisysturiz » Fri Aug 04, 2017 3: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!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: CALCULAR MESES ENTRE 2 PERIODOS

Postby jbrita » Mon Aug 07, 2017 11:38 pm

muchs gracias resulto todo bien

saludos
jbrita
 
Posts: 485
Joined: Mon Jan 16, 2006 3:42 pm

Re: CALCULAR MESES ENTRE 2 PERIODOS

Postby joseluisysturiz » 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... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 9 guests