LISTAR TODAS AS DATAS DE UM PERÃODO
Por favor, será que pode me ajudar?
Tenho a data inicial, que pode ser a de hoje, e a final em uma tabela.
Quero fazer o select me mostrar todas as datas nesse perÃodo, já que preciso verificar se houve
algum feriado nacional ou municipal.
Tem alguma ideia?
Vlw
Tenho a data inicial, que pode ser a de hoje, e a final em uma tabela.
Quero fazer o select me mostrar todas as datas nesse perÃodo, já que preciso verificar se houve
algum feriado nacional ou municipal.
Tem alguma ideia?
Vlw
para isso voce precisa de 3 datas
Uma inicial: (que pode ser hoje)
Uma final: (?????)
e a do seu banco de dados
Seria essa sql, se entendi bem.
Select * From TB Where TB.data between [Ô]Inicio[Ô] and [Ô]Fim[Ô]
Uma inicial: (que pode ser hoje)
Uma final: (?????)
e a do seu banco de dados
Seria essa sql, se entendi bem.
Select * From TB Where TB.data between [Ô]Inicio[Ô] and [Ô]Fim[Ô]
Se sua intenção é apenas gerar as datas a partir de duas, então você pode fazer isso diretamente no código mesmo. Basta apenas você capturar a data desejada no banco e fazer o seguinte:
Se for para trazer os registro do banco com essas datas, você pode usar o código do colega acima.
OBS: Linguagem VB.Net
dim data1 as Date = [Ô]01/10/2016[Ô] [ô]Aqui entra a Data que vem do banco de dados
dim data2 as Date = Date.Now
dim t as timespan = data2-data1
for i as integer = 1 to t.Days
Console.WriteLine(data1.AddDays(i).ToShortDateString())
next
Se for para trazer os registro do banco com essas datas, você pode usar o código do colega acima.
OBS: Linguagem VB.Net
Citação::
para isso voce precisa de 3 datas
Uma inicial: (que pode ser hoje)
Uma final: (?????)
e a do seu banco de dados
Seria essa sql, se entendi bem.
Select * From TB Where TB.data between [Ô]Inicio[Ô] and [Ô]Fim[Ô]
Desse jeito está apenas aplicando um filtro para que sejam apresentados os registros [Ô]entre[Ô] as datas de inicio e fim, mas não
é apresentado as datas, desde a de inÃcio e fim...
Como exemplo, digamos que minha data de inicio seria 01/01/2017 e a final 10/01/2017,
então preciso que meu [Ô]select[Ô] mostre
01/01/2017
02/01/2017
03/01/2017
04/01/2017
05/01/2017
06/01/2017
07/01/2017
08/01/2017
09/01/2017
10/01/2017
Citação::
Se sua intenção é apenas gerar as datas a partir de duas, então você pode fazer isso diretamente no código mesmo. Basta apenas você capturar a data desejada no banco e fazer o seguinte:dim data1 as Date = [Ô]01/10/2016[Ô] [ô]Aqui entra a Data que vem do banco de dados
dim data2 as Date = Date.Now
dim t as timespan = data2-data1
for i as integer = 1 to t.Days
Console.WriteLine(data1.AddDays(i).ToShortDateString())
next
Se for para trazer os registro do banco com essas datas, você pode usar o código do colega acima.
OBS: Linguagem VB.Net
Amigo, vc não entendeu
Eu preciso fazer um [Ô]select[Ô], exibir todas as datas entre 2, desde a de inÃcio até à de fim.
Apenas completando, meu BD é access
Em SQL Server, é possÃvel gerar uma função que faça isso, mas em Access, não dá pra criar funções, então
tem que ser via JOINS ou coisas do tipo.
Se sua intenção é trazer todas as datas, então o que o colega postou resolve o seu problema. Para que isso funcione da maneira que você quer, essas datas precisam existir no banco, daà é só mostrar:
ou
Se para isso você precisa fazer junção de tabela e não está conseguindo, então coloque toda a sua estrutura aà que montamos a consulta pra você.
Select [txt-color=#e80000]CampoDataDesejado [/txt-color]From TB Where TB.data between [Ô]DataInicio[Ô] and [Ô]DataFim[Ô]
ou
Select [txt-color=#e80000]CampoDataDesejado [/txt-color]From TB Where DataInicio >= #datainicio# And DataFim <= #datafim#
Se para isso você precisa fazer junção de tabela e não está conseguindo, então coloque toda a sua estrutura aà que montamos a consulta pra você.
Faz assim
Select Distinct Data from [Tabela} where Data Between # [Data Inicial]# and #[data Final]# order by data
Cuidados:
1 - Talvez vc tenha que formatar [Data Inicial] e [Data Final] para o formato [ô]yyyy/mm/dd[ô] - Daà ficaria assim Format([Data Inicial] ,[Ô]yyyy/mm/dd[Ô])
2 - Se não pegar a Data inicial e final mude Data Between # [Data Inicial]# and #[data Final]# para Data >= # [Data Inicial]# and Data <= #[data Final]#
3 - Se vc grava a hora junto com a data, cuidado com a data final;
4 - Analise a possibilidade de migrar teu banco de dados access para um outro mais robusto.... Eu uso aqui na minha empresa o SqlServer e o PostGress - Recomendo qualquer um dos dois
Select Distinct Data from [Tabela} where Data Between # [Data Inicial]# and #[data Final]# order by data
Cuidados:
1 - Talvez vc tenha que formatar [Data Inicial] e [Data Final] para o formato [ô]yyyy/mm/dd[ô] - Daà ficaria assim Format([Data Inicial] ,[Ô]yyyy/mm/dd[Ô])
2 - Se não pegar a Data inicial e final mude Data Between # [Data Inicial]# and #[data Final]# para Data >= # [Data Inicial]# and Data <= #[data Final]#
3 - Se vc grava a hora junto com a data, cuidado com a data final;
4 - Analise a possibilidade de migrar teu banco de dados access para um outro mais robusto.... Eu uso aqui na minha empresa o SqlServer e o PostGress - Recomendo qualquer um dos dois
Pessoal, vocês estão entendendo errado o que preciso.
Novamente, o que estão dizendo, vai trazer as datas que estão cadastradas no BD, mas não é isso que preciso.
Veja o exemplo:
Tenho cadastrado as datas 15/03/2016, 08/04/2016, 19/04/2016, cada linha no banco, exatamente nessa ordem (perÃodo)
Quando eu fizer o [Ô]select[Ô] apenas no campo [Ô]data_cadastro[Ô], valor [Ô]15/03/2016[Ô], com referencia na data de hoje,
eu preciso que seja apresentado as [Ô]datas[Ô] e não os [Ô]registros gravados[Ô] no BD. A data de hoje e a que
está cadastrada, são só as referencias pra aplicar o filtro, mas os valores, são a indicação de inÃcio e fim das datas
que precisam ser [Ô]geradas[Ô]
Eu preciso obter os valores assim:
15/03/2016 data cadastrada no BD
16/03/2016 à partir dessa, é gerada pelo [Ô]select[Ô], e tenho que visualizar (obter) esse valor
17/03/2016
18/03/2016
19/03/2016
20/03/2016
21/03/2016
22/03/2016
23/03/2016
25/03/2016
26/03/2016
27/03/2016
28/03/2016
.... até hoje
24/01/2017
nesse exemplo, seriam geradas 313 datas, e mais 2 que são as de referencia, 15/03/2016 e a de hoje, 24/01/2017
Compreendem?
Novamente, o que estão dizendo, vai trazer as datas que estão cadastradas no BD, mas não é isso que preciso.
Veja o exemplo:
Tenho cadastrado as datas 15/03/2016, 08/04/2016, 19/04/2016, cada linha no banco, exatamente nessa ordem (perÃodo)
Quando eu fizer o [Ô]select[Ô] apenas no campo [Ô]data_cadastro[Ô], valor [Ô]15/03/2016[Ô], com referencia na data de hoje,
eu preciso que seja apresentado as [Ô]datas[Ô] e não os [Ô]registros gravados[Ô] no BD. A data de hoje e a que
está cadastrada, são só as referencias pra aplicar o filtro, mas os valores, são a indicação de inÃcio e fim das datas
que precisam ser [Ô]geradas[Ô]
Eu preciso obter os valores assim:
15/03/2016 data cadastrada no BD
16/03/2016 à partir dessa, é gerada pelo [Ô]select[Ô], e tenho que visualizar (obter) esse valor
17/03/2016
18/03/2016
19/03/2016
20/03/2016
21/03/2016
22/03/2016
23/03/2016
25/03/2016
26/03/2016
27/03/2016
28/03/2016
.... até hoje
24/01/2017
nesse exemplo, seriam geradas 313 datas, e mais 2 que são as de referencia, 15/03/2016 e a de hoje, 24/01/2017
Compreendem?
bem, o banco de dados nao tem como inventar datas, se nao existe registro, nao tem como o banco de dados voltar esses registros.
Se voce precisa de algo assim, com access, acho que nao será possÃvel, pois o mesmo nao tem store procedure para fazer um while, gerar uma Tabela temporaria, criar essas informações e voltar as mesmas para vc.
Agora uma pergunta, porque isso precisa voltar do access? pq nao pode ser via codigo?
Se voce precisa de algo assim, com access, acho que nao será possÃvel, pois o mesmo nao tem store procedure para fazer um while, gerar uma Tabela temporaria, criar essas informações e voltar as mesmas para vc.
Agora uma pergunta, porque isso precisa voltar do access? pq nao pode ser via codigo?
O código que eu passei faz exatamente isso. Por que teria que ser via banco?
Fazer uma [Ô]tabela temporária[Ô], é possÃvel quando a gente faz um JOIN em um SELECT, se parar pra analisar,
é basicamente uma tabela temporária o SELECT que você acessou.
Eu precisava disso para verificar a contagem de dias entre 2 datas, mas nesses dias contados, deveria
ser dispensado os finais de semanas e feriados nacionais/locais.
Vou pensar em outra solução, Access ficou muito limitado para isso.
Obrigado pela força aà pessoal
é basicamente uma tabela temporária o SELECT que você acessou.
Eu precisava disso para verificar a contagem de dias entre 2 datas, mas nesses dias contados, deveria
ser dispensado os finais de semanas e feriados nacionais/locais.
Vou pensar em outra solução, Access ficou muito limitado para isso.
Obrigado pela força aà pessoal
Com esse código, você pega todas as datas a partir de duas datas, retirando os finais de semana:
dim datas as new ArrayList
dim data1 as Date = [Ô]01/10/2016[Ô]
dim data2 as Date = Date.Now
dim t as timespan = data2-data1
For i as integer = 1 to t.Days
if data1.DayOfWeek <> 5 OrElse data1.DayOfWeek <> 6 then
datas.Add(data1)
end if
data1 = data1.addDays(i).ToShortDateString()
next
For i as integer = 0 to datas.Count-1
Console.WriteLine(datas(i))
Next
Faça seu login para responder