Ir para conteúdo

POWERED BY:

Arquivado

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

Carlos Moreira

[Resolvido] Selecionar 10 dias antes

Recommended Posts

Ola Pessoal

 

Procurei toda internet, mas nao achei nada sobre minha questão

 

Preciso selecionar os clientes 10 dias do vencimento de suas faturas.

 

Tenho uma tabela "CLIENTE" com um campo "DIAVENCIMENTO"

BANCO MYSQL

 

Como dou um select neste campo buscando os clientes que faltam 10 dias

para o seu vencimento

 

Por exemplo, se eu tiver um cliente cadastrado com o dia "20"

e se hoje for dia 10/12/2008 ele seleciona este cliente.

 

Como faço

 

Obrigado desde ja

Compartilhar este post


Link para o post
Compartilhar em outros sites

use a funcao dateadd

Compartilhar este post


Link para o post
Compartilhar em outros sites

Salve Carlos Moreira, Feliz ano novo!

 

Vou deixar 1 exemplo para você com explicação do mesmo!

 

Não sei se no MySQL a função que busca o dia atual é o GETDATE() igual ao SQL SERVER porem a função DATEADD é usada assim como abaixo!

 

SELECT DATEADD(day, 10, GETDATE())

 

DATEADD("TIPO DE INTERVALO QUE SERA UTILIZADO","QUANTIDADE DO INTERVALO UTILIZADO","DATA INICIAL")

 

Onde:

 

TIPO DE INTERVALO QUE SERA UTILIZADO: É o intervalo de tempo que ira utilizar como paramentro para o calculo, no seu caso é dia então usamos a função "DAY" mas poderia ser Horas, Minutos, Segundos e etc.

 

QUANTIDADE DO INTERVALO UTILIZADO: É o tamanho do intervalo que sera utilizado, no seu caso o intervalo é dia e a quantidade é 10 dias antes do vencimento.

 

DATA INICIAL: É o valor inicial para o calculo do intervalo escolhido.

 

Resumindo: Você quer o intervalo de dias, neste intervalo de dias quer descobrir a data daqui 10 dias, partindo da data atual que é hoje.

 

Os intervalos permitidos são os abaixo:

 

Year

quarter

Month

dayofyear (dayofyear )

Day

Week

Hour

minute

second

millisecond

 

 

Espero ter ajudado.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Salve Carlos Moreira,

 

Bom como na sua coluna você só tem o dia de vencimento o que acontece é o seguinte, você tera que montar o restantes da data.

 

Segue exemplo para montar o restantes da data utilizano uma variavel criada em tempo de execução na base de dados(apenas para efeito de testes)

 

DECLARE @DATAVENCIMENTO DATETIME
SELECT @DATAVENCIMENTO = GETDATE()
SELECT CAST(DATEPART(YEAR, GETDATE()) AS VARCHAR)+'-'+CAST(DATEPART(MONTH, GETDATE()) AS VARCHAR)+'-'+CAST(DATEPART(day, @DATAVENCIMENTO) AS VARCHAR)

No seu caso segue alguns exemplos

 

-- CASO USE AAAA-MM-DD (SQL SERVER)
SELECT DATEADD(day, 10, CAST(DATEPART(YEAR, GETDATE()) AS VARCHAR)+'-'+CAST(DATEPART(MONTH, GETDATE()) AS VARCHAR)+'-'+CAST(DATEPART(day, "SUA VARIAVEL") AS VARCHAR))

-- CASO USE AAAA-DD-MM
SELECT DATEADD(day, 10, CAST(DATEPART(YEAR, GETDATE()) AS VARCHAR)+'-'+CAST(DATEPART(day, GETDATE()) AS VARCHAR)+'-'+CAST(DATEPART(MONTH, "SUA VARIAVEL") AS VARCHAR))

-- CASO USE DD-MM-AAAA
SELECT DATEADD(day, 10, CAST(DATEPART(day, "Sua Variavel") AS VARCHAR)+'-'+CAST(DATEPART(MONTH, GETDATE()) AS VARCHAR)+'-'+CAST(DATEPART(YEAR, getDate()) AS VARCHAR))

-- CASO USE MM-DD-AAAA
SELECT DATEADD(day, 10, CAST(DATEPART(month, GETDATE()) AS VARCHAR)+'-'+CAST(DATEPART(day, "Sua Variavel") AS VARCHAR)+'-'+CAST(DATEPART(MONTH, GETDATE()) AS VARCHAR))

Vou pegar o exemplo dia-mes-ano para ententer a divisão

 

SELECT DATEADD(day, 10, CAST(DATEPART(day, "Sua Variavel") AS VARCHAR)+'-'+CAST(DATEPART(MONTH, GETDATE()) AS VARCHAR)+'-'+CAST(DATEPART(YEAR, getDate()) AS VARCHAR))

 

 

Caso for usar "/" Barra ao inves e "-" Ifem basta trocar nesta parte do codigo: +'-'+

 

Bom, ja é papinha de Nenem esta em... agora é só engolir, ja mandei prontinho só porque é ano novo em....

 

Abraços e boa sorte ai.... espero que de certo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você tb pode recuperara data e Usar a função DateAdd(), para adicionar o valor desejado,

DateAdd ( ) ,devolve uma data, onde um determinado intervalo foi submetido.

var1 = Now() 
Response.Write("var1 = " & var1 & "<br>") 
Response.Write("var1 plus 10 days = " & DateAdd("d", 10, var1) & "<br>")

As adições possíveis são determinadas pelas seguintes hipóteses :

yyyy -> Ano

q -> Quarto

m -> Mês

y -> Dia do Ano

d -> Dia

w -> Dia da semana

ww -> Semana do ano

h -> Hora

n -> Minuto

s -> Segundo

ou na instrução SQL

SELECT * FROM cliente Where DiaVenc = (CURRENT_DATE + 10) order by Nome

Compartilhar este post


Link para o post
Compartilhar em outros sites

o detalhe importante é o que o filipescoob levantou

 

ele armazenar apenas o dia

 

o resto da data tem que ser montada para poder comparar com o dia atual

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal desculpe o encomodo.

 

Mas tah dificil aqui viu, muito mais do que imaginava!!!!

 

Nunca mechi com este tipo de select so leigo mesmo.

 

Nao to conseguindo montar o codigo.

 

VAmos la recapitulando

 

Minha Tabela = cliente

Coluna = DiaVenvimento

 

Preciso que selecione todos os clientes que faltarem 10 dias para o vencimento

pegando o dia que esta gravado na coluna DiaVencimento.

 

Estou fazendo assim.

sql = "SELECT * FROM cliente Where DiaVencimento = (CURRENT_DATE + 10)"

Mas nao seleciona nenhum.

 

é como o mario disse eu teria que montar antes, mas nao estou conseguindo fazer como o felip postou.

Obs: meu banco é MYSQL

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aqui no forum nao achei nada tambem correspondente.

Na net fiz uma busca meio que por cima e tambem nao encontrei nada.

 

Abraços

 

Assim que chegar em casa vejo para você, no caso que expliquei funcina em SQL SERVER

Compartilhar este post


Link para o post
Compartilhar em outros sites

<%

DataHoje = Now()

 

DataAntes10 = DateAdd("d", -10, DataHoje)

DataAntes10 = Day(DataAntes10) & "/" & Month(DataAntes10) & "/" & Year(DataAntes10)

 

Response.Write "<br>DATA HOJE -> " & DataHoje

Response.Write "<br>DATA ANTES -> " & DataAntes10

 

Response.Write "<br>SQL -> " & "SELECT * FROM tabela WHERE DataVencimento = '" & DataAntes10 & "'"

%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

GALERA COMO SEMPRE VCS ME AJUDANDO E MUITO AINDA.

 

Muito Obrigado a todos ao filipescoob, Mário Monteiro, xanburzum e em especial ao WebASP que postou o codigo certinho.

 

só troquei o -10 do codigo por +10 e ele seleciona todos que vencerem daqui 10 dias compara a data atual e soma mais 10 dias e seleciona somente clientes cadastrados naquele dia, usei um

 

Right("0"&Day(DataAntes10),2)

 

Ai batata.

 

Obrigado pessoal

Feliz Ano Novo.

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.