Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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.
tem um comando no mysql chamado BETWEEN...
ele faz uma busca entre determinados valores..
sera util para seu caso..
abraços
>
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.
>
>
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....
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.
http://forum.imasters.com.br/index.php?/topic/358633-seleccionar-dias/page__hl__data__fromsearch__1