Ir para conteúdo

POWERED BY:

Arquivado

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

XyBeR

Intervalo entre datas

Recommended Posts

Pessoal estou com a seguinte duvida, gostaria de realizar um SELECT aonde eu informe uma data inicial e final e ele me retorne as datas deste período, por exemplo:

 

Informo que a data inicial é 2009-10-01 e data final é 2009-10-04 gostaria que me retorna-se o seguinte:

 

+------------+
| datas      |
+------------+
| 2009-10-01 |
| 2009-10-02 |
| 2009-10-03 |
| 2009-10-04 |
+------------+

Tudo isso sem usar uma tabela com dados como referencia.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem um comando no mysql chamado BETWEEN...

ele faz uma busca entre determinados valores..

sera util para seu caso..

 

 

 

abraços

 

Não é o caso, ele quer apenas uma forma de gerar linhas com as tais datas, não as que estão no banco.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

tem um comando no mysql chamado BETWEEN...

ele faz uma busca entre determinados valores..

sera util para seu caso..

 

 

 

abraços

 

Não é o caso, ele quer apenas uma forma de gerar linhas com as tais datas, não as que estão no banco.

 

 

foi mal naum li o conteudo inteiro....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eclesiastes vlw pela ajuda consegui chegar nesse resultado com aquele link:

SELECT data
FROM (
    SELECT *
    FROM (
        SELECT IF(NOT DAY(CONCAT(ANO, '-', MES, '-', DIA)) IS NULL, CONCAT(ANO, '-', MES, '-', DIA), 'N') AS data
        FROM (SELECT 2008 ANO UNION SELECT 2009) ANOS,
            (SELECT '01' MES UNION SELECT '02' UNION SELECT '03' UNION SELECT '04' UNION
            SELECT '05' UNION SELECT '06' UNION SELECT '07' UNION SELECT '08' UNION      
            SELECT '09' UNION SELECT '10' UNION SELECT '11' UNION SELECT '12') MESES,
            (SELECT '01' DIA UNION SELECT '02' UNION SELECT '03' UNION SELECT '04' UNION
            SELECT '05' UNION SELECT '06' UNION SELECT '07' UNION SELECT '08' UNION
            SELECT '09' UNION SELECT '10' UNION SELECT '11' UNION SELECT '12' UNION
            SELECT '13' UNION SELECT '14' UNION SELECT '15' UNION SELECT '16' UNION
            SELECT '17' UNION SELECT '18' UNION SELECT '19' UNION SELECT '20' UNION
            SELECT '21' UNION SELECT '22' UNION SELECT '23' UNION SELECT '24' UNION
            SELECT '25' UNION SELECT '26' UNION SELECT '27' UNION SELECT '28' UNION
            SELECT '29' UNION SELECT '30' UNION SELECT '31') DIAS           
        ) datas      
        WHERE data <> 'N'
        ORDER BY data
    ) resultado
WHERE data >= '2009-10-01' AND data <= '2009-10-04'
Obs.: "SELECT 2008 ANO UNION SELECT 2009" vai ter 1 UNION para cada ano que eu estiver usando.

 

Motta o seu link também foi de grande ajuda e consegui chegar nesse resultado com as informações que eu já tinha do link do Eclesiastes:

SET @va = 0;
SET @vm = 0;
SET @vd = 0;
SET @num = 0;
SELECT data
FROM (
    SELECT *
    FROM (
        SELECT IF(NOT DAY(CONCAT(ANO, '-', MES, '-', DIA)) IS NULL, STR_TO_DATE(CONCAT(ANO, '-', MES, '-', DIA), '%Y-%m-%d'), 'N') AS data
        FROM (SELECT (@va := @va + 1) AS Id, (@num := (2008 - 1) + @va) AS ANO FROM bo WHERE @num < 2009) ANOS,
            (SELECT (@vm := @vm + 1) AS MES FROM bo WHERE @vm < 12) MESES,
            (SELECT (@vd := @vd + 1) AS DIA FROM bo WHERE @vd < 31) DIAS           
        ) datas      
        WHERE data <> 'N'
        ORDER BY data
    ) resultado
WHERE data >= '2009-10-01' AND data <= '2009-10-04'
Obs.: "(@num := (2008 - 1) + @va" eu informo 2008 como o ano de inicio da pesquisa e "@num < 2009" eu informo o ano final da pesquisa.

 

 

Das duas maneiras consegui chegar no resultado que eu queria fica ai de exemplo para quem fico na duvida também.

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.