MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]Converter intervalo de datas em data por dia

    avatar
    zcarloslopes
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 310
    Registrado : 28/10/2010

    [Resolvido]Converter intervalo de datas em data por dia Empty [Resolvido]Converter intervalo de datas em data por dia

    Mensagem  zcarloslopes em 28/2/2019, 11:36

    Bom dia a todos,

    Estou com outro problema para o qual venho pedir ajuda.

    Tenho uma tabela (tblA) com intervalos de datas (D_Inicio e D_Fim).

    exemplo:
    D_Inicio        D_Fim
    01/01/2019   03/01/2019
    02/02/2019   04/02/2019

    Como faço uma consulta que retorne as datas dos dias todos:

    do exemplo anterior retornaria o seguinte:
    D_Dias
    01/01/2019
    02/01/2019
    03/01/2019
    02/02/2019
    03/02/2019
    04/02/2019

    Obrigado

    Carlos Lopes


    Última edição por zcarloslopes em 1/3/2019, 08:37, editado 1 vez(es)
    JPaulo
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 10604
    Registrado : 04/11/2009

    [Resolvido]Converter intervalo de datas em data por dia Empty Re: [Resolvido]Converter intervalo de datas em data por dia

    Mensagem  JPaulo em 28/2/2019, 11:49

    Olá;

    Abra uma consulta em modo SQL, cole e teste;

    Código:
    SELECT tblA.D_Inicio
    FROM tblA
    UNION ALL
    SELECT tblA.D_FIM
    FROM tblA
    ORDER BY 1;


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Converter intervalo de datas em data por dia Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Converter intervalo de datas em data por dia Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Converter intervalo de datas em data por dia Folder_announce_new Instruções SQL como utilizar...
    avatar
    zcarloslopes
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 310
    Registrado : 28/10/2010

    [Resolvido]Converter intervalo de datas em data por dia Empty Re: [Resolvido]Converter intervalo de datas em data por dia

    Mensagem  zcarloslopes em 28/2/2019, 11:59

    Obrigado Paulo pelo retorno,

    Não é isso que pretendo, talvez me tenha explicado mal, eu preciso que a consulta me retorne todas as datas individuais (dias) dos intervalos de datas incluindo os dias entre os respectivos intervalos.

    Obrigado

    Carlos Lopes

    P.S. Seria algo parecido com isto, mas numa consulta:

    Código:
    Sub Calling()
        Dim test
        test = getDates(#1/1/2019#, #2/5/2019#)
    End Sub

    Function getDates(ByVal StartDate As Date, ByVal EndDate As Date) As Variant

        Dim varDates()      As Date
        Dim lngDateCounter  As Long

        ReDim varDates(1 To CLng(EndDate) - CLng(StartDate))

        For lngDateCounter = LBound(varDates) To UBound(varDates)
            varDates(lngDateCounter) = CDate(StartDate)
            StartDate = CDate(CDbl(StartDate) + 1)
        Next lngDateCounter

        getDates = varDates

    End Function

    Obrigado
    avatar
    zcarloslopes
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 310
    Registrado : 28/10/2010

    [Resolvido]Converter intervalo de datas em data por dia Empty Re: [Resolvido]Converter intervalo de datas em data por dia

    Mensagem  zcarloslopes em 1/3/2019, 08:36

    Bom dia a todos,

    Consegui resolver o problema, salvo melhor opção, deixo aqui a que encontrei para quem precisar:

    Criei uma tabela "Numbers" apenas com o campo "N" e o numerei de 1 a 31 (no meu caso nunca irei ter sequências de dias superiores a 31 dias, mas pode ser alterado).

    Criei então a seguinte query:
    Código:
    SELECT DateAdd("d",[N],([D_Inicio])) AS Dias
    FROM Numbers, tbl_MinhaTblComIntervalo
    WHERE (((Numbers.N)<=DateDiff("d",([D_Inicio]),([D_Fim]))))
    ORDER BY DateAdd("d",[N],([D_Inicio]));

    Obrigado

      Data/hora atual: 23/10/2020, 09:10