boa noite,
estou com a seguinte duvida, estou armazenando datas no banco de dados nesse formato:
6/1/2011
12/11/2010
23/02/2011
como faço um select de 01/01/2010 ate 31/01/2010 ? estou utiliazando postgres
boa noite,
estou com a seguinte duvida, estou armazenando datas no banco de dados nesse formato:
6/1/2011
12/11/2010
23/02/2011
como faço um select de 01/01/2010 ate 31/01/2010 ? estou utiliazando postgres
Vc conseguiu fazer algo? É mais fácil apontar onde vc está em dúvida.
Esse tipo de select é bem fácil, se vc não conseguiu fazer é porque tem algo errado.
Utilize a estrutura
Select (nome da coluna)
From (Nome da tabela)
Where (Condição) <-- é aqui que vc vai especificar o intervalo de datas que vc quer.
Por exemplo, se tenho a tabela PESSOA, com dois campos: nome e nascimento e quero todos que façam aniversário depois do dia 01/01/2005, farei assim:
Select Nome, Nascimento
From Pessoa
Where Nascimento > ‘01/01/2005’
ok?
ok… vou tenta aqui
Talvez o beetwen resolva seu problema.
Dá uma pesquisada.
Outra coisa. MM/dd/yyyy
Depende de como o banco foi configurado, ele pode aceitar dd/MM/yyyy , MM/dd/yyyy , yyyy/MM/dd e ainda é possível trocar “/” por “-”.
[quote=DaitonJr]boa noite,
estou com a seguinte duvida, estou armazenando datas no banco de dados nesse formato:
6/1/2011
12/11/2010
23/02/2011
como faço um select de 01/01/2010 ate 31/01/2010 ? estou utiliazando postgres[/quote]
Boa tarde a todos.
Pessoal, isto é a coisa mais fácil em se tratando de SQL.
Select * from tabela where campo_data between cast('01/01/2010' as date) and cast('31/01/2010' as date)
Simples assim :?: :!: 8)
Mais é o formata da data :?:
Repare que usei a função “cast(…)” para converter string em data no Postgres e mesmo que voce fizesse somente assim:
Select * from tabela where campo_data between '01/01/2010' and '31/01/2010';
O Postgres, a reconhecer o campo como data, já faz a conversão normal do cast automaticamente.
Testa ai pra ver como funciona.
É concordo com o pessoal aí de cima
Só complementando, já tive um problema com isso, não sei porque ele não tava aceitando o formato da data que eu estava passando… tem a função to_date(‘data’,‘formato’) no postgres que faz conversão de varchar em tipo date, o único problema é para datas do tipo ‘6/1/2011’ sem o 0 antes do 6…
Funciona tipo assim:
[…] AND campo between to_date(‘01/01/2011’, ‘dd/mm/yyyy’) AND to_date(‘31/01/2011’, ‘dd/mm/yyyy’)
Lembrando também que se o campo for do tipo timestamp, é bom fazer a conversão para tipo Date, assim:
campo_timestamp::Date
Senão, naquele exemplo os resultados do dia 31/01 não entrariam
Pode-se fazer assim também: (SQL Server, pode server talvez outros bancos)
[code]CREATE TABLE DataTeste
(Data SMALLDATETIME)
INSERT INTO DataTeste VALUES
(DATEADD(dd, -10, GETDATE()))
,(DATEADD(dd, +10, GETDATE()))
– Retorna uma data
SELECT * FROM DataTeste WHERE Data BETWEEN ‘2011/02/10’ AND ‘2011/03/10’
– Retorna duas datas
SELECT * FROM DataTeste WHERE Data BETWEEN ‘2011/02/10’ AND ‘2011/03/22’[/code]
Boa noite a todos.
Pessoal, eu testei o sql abaixo e funcionou redondinho :lol:
select * from tabela where campo_data between '01/01/2010' and '31/01/2010';
Só que esqueci de informar um detalhe, a versão do Postgres instalada na minha máquina está em português, e talvez seja por isto que está funcionando. :roll: