Ir para conteúdo

POWERED BY:

Arquivado

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

renatomil5

Subtraindo datas

Recommended Posts

fala povo, boa noite!

 

entao... preciso subtrair duas datas... uma de hj... e outra q vem do banco...

 

mas a q vem do banco... tenho q juntar... q esta sendo salva em separado dia - mes - ano

 

procurei sobre esse DateDiff( d, data1, data2)

 

mas ta dando dados incompativeis...

 

quando coloco tipo... var = DateDiff( d, data1, data2)

da DateDiff nao declarada a função...

 

algo assim...

 

muito obrigado a atenção de todos!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa função eu uso para formatar a data

function mask_data( obj )
		obj = CDAte( obj )
		dia = Day( obj  )
		mes = Month( obj )
		ano = Year( obj )
	
			if dia < 10 then
				dia = "0" & dia
			end if

			if mes < 10 then
				mes = "0" & mes
			end if
					
		 mask_data = ano &"-"& mes &"-"& dia &" "& time
end function

 

Para formatar basta fazer assim

mask_data(Date)

 

sendo assim a data vai ficar ANO-MES-DIA 2013-07-04

 

https://www.facebook.com/webprogramation

 

Att;

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara.... desculpa... mas nao entendi...

vou tentar explicar melhor.... talvez seja eu q expliquei errado...

tenho 3 colunas no banco diaC mesC anoC

ai falo o select..

ai vou:

var1 = sql("diaC")

var2....

var3...

 

ai coloco data = var1+"/"+var2+"/"+var3

ai formo a data 03/04/2001

 

ai preciso saber quantos dias tem essa data..

 

pra retornar um relatorio... tipo... 745pessoas estao a tantos dias... etc... etc...

 

ai tenho tb diaS mesS anoS ... q nao falei ai... mas posteriormente... tenho q jogar as datas que eles ficaram..

mesmo c ja tivesse saido... tenho q ter o registro... entende?

 

desculpa... mas nao entendi mesmo isso ai...

mas MUITO obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vc tem 3 colunas na sua tabela pra formar a data dia me e ano?

 

se for faz o select

function mask_data( obj )
		obj = CDAte( obj )
		dia = Day( obj  )
		mes = Month( obj )
		ano = Year( obj )
	
			if dia < 10 then
				dia = "0" & dia
			end if

			if mes < 10 then
				mes = "0" & mes
			end if
					
		 mask_data = ano &"-"& mes &"-"& dia
end function


set rs = conn.excute("select * from table")

dataanterior = rs("anoc")-rs("mes")-rs("dia")
dataatual = mask_data(Date)

diferenca = datataual-dataanterior

 

 

https://www.facebook.com/webprogramation

 

 

 

Att;

Compartilhar este post


Link para o post
Compartilhar em outros sites

converte ela antes com o CDate depois verifique com o IsDate, dae use o DateDiff

Compartilhar este post


Link para o post
Compartilhar em outros sites

opaaaaa... agora eu entendi...

deram uma luz!!!!

 

vou testar amanhã... uso mac.... nao sei como froda o iis no mac... rs..

 

mas pow... todas as considerações.... mt obrigado!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu ja usei o ChiliSoft para a execução de ASP em plataformas Unix, mas eu não acho que eles têm um disponível para Mac OS X, ou talvez usar um emulador e nele rodar o IIS/ASP, tem o IASP está sendo distribuído com iTools 6 para Mac OS X. tem uma versão do IASP Stryon para iTools 6,0 disponível para download.mas nunca usei ,procure por IASP

Compartilhar este post


Link para o post
Compartilhar em outros sites

fala pessoal.. bom dia..

 

entao.. vou dar uma olhada.... num to com tempo pra emular...

sempre mt coisa pra ver no mac...

 

ENTAO...

isso ai é js?

c for ... como faço pra chamar a função?

 

segue ai parte do codigo... q eu to tentando...

 

do while not sql.eof

dc1 = sql("AnoC")

dc2 = sql("MesC")

dc3 = sql("DiaC")

CDate dc = (dc3+"/"+dc2+"/"+dc1)

CDate ds = date(now)

 

aux = DateDiff("d", ds, dc)

 

 

if aux < 31 then

t = t + 1

end if

ai vai... de 31 a 60 .. etc..

 

da esse erro: A variável usa um tipo de automação sem suporte no VBScript: 'CDate'

 

 

ai eu tenho o tempo dos que estao aqui...

 

posteriormente...

eu tenho q pegar do banco as datas dos que ja sairam..

salvas no mesmo esquema... q iria substituir ai a date(now)

 

muito obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia Renato, seguinte, seu erro é simples! Você está pegando a data do banco de dados, em pedaços (dia mes e ano separados) e não está realmente "transformando" em data... Muito simples isso! Segue abaixo seu código arrumado! Espero ter ajudado!

 


var1 = sql("diaC")

var2= sql("diaC")

var3= sql("diaC")

 

data1 = var1+"/"+var2+"/"+var3

dif = DateDiff("d",Date(),CDate(data1)) 'viu que foi convertido com o CDate para que o sistema juntasse realmente sua data?

 

 

fala pessoal.. bom dia.. entao.. vou dar uma olhada.... num to com tempo pra emular... sempre mt coisa pra ver no mac... ENTAO... isso ai é js? c for ... como faço pra chamar a função? segue ai parte do codigo... q eu to tentando... do while not sql.eof dc1 = sql("AnoC") dc2 = sql("MesC") dc3 = sql("DiaC") CDate dc = (dc3+"/"+dc2+"/"+dc1) CDate ds = date(now) aux = DateDiff("d", ds, dc) if aux < 31 then t = t + 1 end if ai vai... de 31 a 60 .. etc.. da esse erro: A variável usa um tipo de automação sem suporte no VBScript: 'CDate' ai eu tenho o tempo dos que estao aqui... posteriormente... eu tenho q pegar do banco as datas dos que ja sairam.. salvas no mesmo esquema... q iria substituir ai a date(now) muito obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

fala meu bom... obrigado...

 

mas ta dando o mesmo erro:

 

A variável usa um tipo de automação sem suporte no VBScript: 'CDate'

 

fiz assim:

do while not sql.eof

dc1 = sql("DiaC")

dc2 = sql("MesC")

dc3 = sql("AnoC")

CDate dc = (dc3+"/"+dc2+"/"+dc1)

 

 

aux = DateDiff("d",Date(),CDate(dc))

 

obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

você também pode deixar o campo no bd como data e fazer a operação direto na string SQL.

 

E qual o numero do erro e linha atual

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao... meu banco é meio grande e por ser access... eu num queria mexer nao...

o erro completo é esse..

 

Erro de tempo de execução do Microsoft VBScript erro '800a01ca'

 

 

Tipos incompatíveis: 'CDate'

 

 

/**/***/ListagemTempoPermanencia.asp, line 69

 

seria essa: aux = DateDiff("d",Date(),CDate(dc))

 

 

tentei juntar invertido aaa/mm/dd... mas da no mesmo esquema..

precisa importar alguma coisa?

 

obrigado

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

não vai alterar em nada seu bd, apenas usar uma SQL tipo assim:

 

 

SELECT (DATEPART(day, primeiro_campo) - DATEPART(day, segundo_campo)) FROM tabela WHERE coluna = 'valor'

Compartilhar este post


Link para o post
Compartilhar em outros sites

rapaz... isso realmente eu nunca tinha visto ... nem na faculdade.. rs..

vlw pela dica....

 

ai la na frente é só fubtrair uma pela outra ne?!

 

demoro... obrigado a todos!

Compartilhar este post


Link para o post
Compartilhar em outros sites

pessoal .. bom dia...

eu fiz assim.

 

set sql = conexao.execute("SELECT (DATEPART(day, Diac) - DATEPART(day, DiaS)) FROM relacaotb WHERE Interno = 'NÃO'")

 

e tb assim..

 

set sql = conexao.execute("SELECT (DATEPART(day, Diac, month, MesC, year, AnoC) - DATEPART(day, DiaS, month, MesS, year, AnoS)) FROM relacaotb WHERE Interno = 'NÃO' ORDER BY Nome")

 

no primeiro ... deu isso:

[Microsoft][Driver ODBC para Microsoft Access] Parâmetros insuficientes. Eram esperados 1.

 

no segundo: [Microsoft][Driver ODBC para Microsoft Access] Número incorreto de argumentos usados com a função na expressão de consulta '(DATEPART(day, Diac, month, MesC, year, AnoC) - DATEPART(day, DiaS, month, MesS, year, AnoS))'.

 

se eu to subtraindo direto la... ele vai jogar pra qual variavel?!

 

obrigado ai a todos cara... desculpa as ignorancias! rs..

 

bom dia a todos!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Imagina que a sua tabela tem duas colunas de data, data1 e data2. no select vc faz o seguinte.

select (data1-data2) as datadiferenca * from nomedatabela

 

 

https://www.facebook.com/webprogramation

 

Att;

Compartilhar este post


Link para o post
Compartilhar em outros sites

entendi..

 

mas na tabela ... a data ta separada... uma coluna pra cada campo de cada data..

 

sreria algo como: ((diac/mesc/anoc) - (dias/mess/anos))

 

o problema é esse... q é cada coluna pra cada campo da data..

 

obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faz o select na tabela. Feito o select vc pega os dados.

function mask_data( obj )
		obj = CDAte( obj )
		dia = Day( obj  )
		mes = Month( obj )
		ano = Year( obj )
	
			if dia < 10 then
				dia = "0" & dia
			end if

			if mes < 10 then
				mes = "0" & mes
			end if
					
		 mask_data = ano &"-"& mes &"-"& dia
end function

set rs = con.execute("select * from nametable")

dataanterior = rs("ano")&""&rs("mes")&"-"&rs("dia")

diferenca = mask_data(Date) - dataanterior

response.write("diferenca")

 

 

https://www.facebook.com/webprogramation

 

Att;

Compartilhar este post


Link para o post
Compartilhar em outros sites

usa a sintaxe que postei no #13

mas dê um response.write na sua string SQL para ver o que esta sendo passado.

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.