Ir para conteúdo
Fórum Script Brasil
  • 0

DATEDIFF EM TODO BANCO DE DADOS


coopermine

Pergunta

Ola forum,

Estou com um serio problema aki,(se é que é problema).

tenho um bd com os seguintes campos...

datavencimento - diasvencidos

preciso montar uma query para preencher o bd todo com os dias vencidos usando o DATADIFF, pois minha tabela diasvencidos está vazia...

desde já agradesço!

Abraços...

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Oi,'coopermine' !

A função DateDiff funciona como abaixo:

DATEDIFF(expr,expr2), TIMEDIFF(expr,expr2)

DATEDIFF() retorna o número de dias entre a data inicial expr e a data final expr2. expr e

expr2 são expressões de datas ou data e hora. Apenas a parte da data dos valores sã usados no

cálculo.

TIMEDIFF() retorna o tempo entre a hora inicial expr e a hora final expr2. expr e expr2

são expressões de hora ou data e hora, mas ambas devem ser do mesmo tipo.

Fonte: Manual do MySQL 4.1 seção 6.3.4. Funções de Data e Hora

A instrução seria mais ou menos assim:

UPDATE diasvencidos
SET campo = DATEDIFF(data1, data2);

Se precisar mais detalhes, especifique.

Link para o comentário
Compartilhar em outros sites

  • 0
Oi,'coopermine' !

A função DateDiff funciona como abaixo:

DATEDIFF(expr,expr2), TIMEDIFF(expr,expr2)

DATEDIFF() retorna o número de dias entre a data inicial expr e a data final expr2. expr e

expr2 são expressões de datas ou data e hora. Apenas a parte da data dos valores sã usados no

cálculo.

TIMEDIFF() retorna o tempo entre a hora inicial expr e a hora final expr2. expr e expr2

são expressões de hora ou data e hora, mas ambas devem ser do mesmo tipo.

Fonte: Manual do MySQL 4.1 seção 6.3.4. Funções de Data e Hora

A instrução seria mais ou menos assim:

UPDATE diasvencidos
SET campo = DATEDIFF(data1, data2);

Se precisar mais detalhes, especifique.

obrigado pela resposta, ate ai eu consegui chegar!

no meu caso a data1 seria o dia atual e a data2 seria a data de vencimento. o problema é que eu preciso calcular essa diferença em todo o bd

e cada registro tem data de vencimento diferente, intende? por enquanto o campo diasvencidos dentro do bd mensalidades está vazio

mais uma vez agradesço!

Editado por coopermine
Link para o comentário
Compartilhar em outros sites

  • 0
...no meu caso a data1 seria o dia atual e a data2 seria a data de vencimento. o problema é que eu preciso calcular essa diferença em todo o bd

e cada registro tem data de vencimento diferente, intende? por enquanto o campo diasvencidos dentro do bd mensalidades está vazio

data de vencimento é campo de sua tabela desta tabela ou outra tabela?

dia atual é campo de sua tabela? se não for use NOW()

Sem mais detalhes está difícil de ajudar.

Link para o comentário
Compartilhar em outros sites

  • 0
sim é a data atual pela data que esta no bd na tabela vencimento... posso usar o now... a minha dificuldade esta sendo montar essa query que faça o update em todo bd..

Passa um trecho com o select e com parte das estruturas das tabelas que você está trabalhando. Não precisa passar toda a estrutura da tabela e nem usar os nomes verdadeiros dos campos, mes precisa passar o tipo dos campos e quais indices são chave.

Link para o comentário
Compartilhar em outros sites

  • 0

QUERY

select codsistema, vencimento, diasvenc from mensalidade where baixa = "não";

RESULTADO

-------------------------------------------------------

codsistema vencimento diasvenc

3 2009-03-02 0

4 2009-03-01 0

5 2009-02-02 0

6 2009-04-02 0

7 2009-03-02 0

--------------------------------------------------------

CODSISTEMA É A CHAVE PRIMARIA!

Seria isso que você queria?

PS: sempre lembrando.. preciso de uma query que calcule os dias vencidos pela data atual (now) e preencha o campo diasvenc de todo bd.

mais uma vez grato!

Editado por coopermine
Link para o comentário
Compartilhar em outros sites

  • 0

Oi, 'coopermine'

Usando seu exemplo teria:

select codsistema, vencimento, datediff(now(), vencimento) as diasvenc from mensalidade where baixa = "não";
O exemplo acima só mostra o resultado que você quer. Para atualizar os danos na tabela de modo que você possa usar o SEU select, seria assim:
UPDATE mensalidade 
set diasvenc = datediff(now(), vencimento) 
where baixa = "não";

TESTA ANTES DE FAZER O UPDATE.

Faça backup antes para evitar caca.

Não me responsabilizo por erros em seus dados.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...