LISTAR TODAS AS DATAS DE UM PERÍODO

 Tópico anterior Próximo tópico Novo tópico

LISTAR TODAS AS DATAS DE UM PERÍODO

SQL / DATABASE

 Compartilhe  Compartilhe  Compartilhe
#470978 - 24/01/2017 15:48:41

POCE1DON
GOIANIA
Cadast. em:Julho/2010


Última edição em 24/01/2017 15:58:12 por POCE1DON

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




#470982 - 24/01/2017 17:40:46

LVFIOROT
SERRA
Cadast. em:Março/2012


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"



#470983 - 24/01/2017 18:04:54

JABA
CABO FRIO
Cadast. em:Agosto/2005


Última edição em 24/01/2017 18:08:09 por JABA

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


_______________________________________________________________________________________________

Se a alma ou espírito são imateriais, como eles fazem para se localizarem quando o corpo está em movimento?



#470984 - 24/01/2017 18:41:30

POCE1DON
GOIANIA
Cadast. em:Julho/2010


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.



#470985 - 24/01/2017 20:14:25

JABA
CABO FRIO
Cadast. em:Agosto/2005


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:

Select CampoDataDesejado From TB Where TB.data between "DataInicio" and "DataFim"


ou

Select CampoDataDesejado  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ê.

_______________________________________________________________________________________________

Se a alma ou espírito são imateriais, como eles fazem para se localizarem quando o corpo está em movimento?



#470986 - 24/01/2017 20:16:05

PLUGSOFTSM
SANTA MARIA
Cadast. em:Julho/2015


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



#470987 - 24/01/2017 21:29:44

POCE1DON
GOIANIA
Cadast. em:Julho/2010


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?




#470988 - 24/01/2017 21:48:29

LVFIOROT
SERRA
Cadast. em:Março/2012


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?







#470989 - 24/01/2017 21:54:44

JABA
CABO FRIO
Cadast. em:Agosto/2005


O código que eu passei faz exatamente isso. Por que teria que ser via banco?

_______________________________________________________________________________________________

Se a alma ou espírito são imateriais, como eles fazem para se localizarem quando o corpo está em movimento?



#470992 - 24/01/2017 22:02:46

POCE1DON
GOIANIA
Cadast. em:Julho/2010


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



#470999 - 25/01/2017 00:55:10

JABA
CABO FRIO
Cadast. em:Agosto/2005


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


_______________________________________________________________________________________________

Se a alma ou espírito são imateriais, como eles fazem para se localizarem quando o corpo está em movimento?



 Tópico anterior Próximo tópico Novo tópico


Para responder este tópico o login é requerido
Se você já possui uma conta de usuário por favor faça seu login
Se você não possui uma conta de usuário use a opção Criar usuário