Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Asteriscos

datediffICIL!!!

Recommended Posts

Olá Pessoal,

 

Estou tentando saber a diferença de dias entre duas datas e está ok, porém têm um "detalhe".

A diferença deverá ser somente entre o dia e o mês, ignorando o ano.

 

Ex.1:

- Data do BD a ser verificada: 01/03/2006

- data atual: 08/03/2005

- resultado obtido (dias): 373 (somatório de 365 dias + os 8 dias)

- resultado desejado (dias): 8

 

Ex.2:

- Data do BD a ser verificada: 01/03/2006

- data atual: 08/03/2004

- resultado obtido (dias): 738 (somatório de 2 anos + os 8 dias)

- resultado desejado (dias): 8

 

 

 

<%Set conn = Server.CreateObject("ADODB.Connection")cnpath="DBQ=" & server.mappath("banco.mdb")conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & cnpathstrSQL = "select top 15 DateDiff ('d', datanascimento, #"&date()&"#) as dias,datanascimento from tbl_clientes "response.write "<b> strSQL: </b>" & strSQL & "<br><br>"SET rs = Server.CreateObject("ADODB.Recordset")rs.Open strSQL, connDo Until rs.EOF = True   response.write "<b>" & rs("dias") & "</b> - "   response.write rs("datanascimento") & "<br>"   rs.MoveNext Loop%>

Resultado obtido:

 

strSQL: select top 15 DateDiff ('d', datanascimento, #08/03/2006#) as dias,datanascimento from tbl_clientes

 

2092 - 2000-11-10

4219 - 1995-01-14

0 - 3333-22-11

4845 - 1993-04-28

4472 - 1994-05-06

6505 - 1988-10-11

9396 - 1980-11-11

10957 - 1976-08-03

3765 - 1996-04-12

3765 - 1996-04-12

4496 - 1994-04-12

4496 - 1994-04-12

10017 - 1979-03-01

10546 - 1977-09-18

5642 - 1991-02-21

 

 

Desde já agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, uma solução (talvez gambiarra), é você criar uma nova data com ano padrão definido, tipo 2000....Por exemplo...

<% Session.LCID = 1046data_banco = RS("data")data_banco_dia = Datepart("d", data_banco)data_banco_mes = Datepart("m", data_banco)data_banco_fim = data_banco_dia & "/" & data_banco_mes & "/" & Year(now)data_atual = Date()data_dif = Datediff("d",data_banco_fim,data_atual)Response.Write("data = " & data_banco_fim & "<br /><br />")Response.Write("data_atual = " & data_atual & "<br /><br />")Response.Write("Diferença entre os dias: " & data_dif)%>

PS: Num testei :DAbraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim! recuperando a data consigo fazer no código. Mas tem um pequeno probleminha... a performance!Fazendo um filtro na query traria para o IIS apenas os registros em que a diferença entre as datas fosse menor do que 10 dias, o que daria poucos registros para o IIS processar.Trazendo todos os registros para que o IIS trate, através do código, registro a registro qual que possui menos de 10 dias de diferença, acredito que sobrecarregue muito o servidor.Como trabalharei c/ uma grande quantidade de registros vou tentar mais um pouco solucionar esse desafio aqui...Mas obrigado pela força!

Compartilhar este post


Link para o post
Compartilhar em outros sites

usa na instrução sql essas funcoes aewhere day(data1) >= day(data2) and month(data1) >= month(data2)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, Resolvido!seque a query: select TOP 15 *, Cint( datediff( 'd', #3/10/2006#, Cstr( Cstr(year(#3/10/2006#)) +'-'+ Cstr(month(datanascimento)) +'-'+ Cstr(day(datanascimento)) ) ) ) as dias from tbl_clientesObrigado a todos que tentaram me ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.