Consultas em indices
No oracle, quando faço uma consulta utilizando um indice e utilizo alguma função do banco na coluna no WHERE eu acabo perdendo a consulta por indice , ex:
select datacadastro from usuario where datacatastro = to_date(´15/10/2007´,´DD/MM/YYYY´)
(não sei se o exemplo esta correto tmbm :D )
no postgres isso acontece tmbm?
select datacadastro from usuario where datacatastro = to_date(´15/10/2007´,´DD/MM/YYYY´)
(não sei se o exemplo esta correto tmbm :D )
no postgres isso acontece tmbm?
Geisonq
Curtidas 0
Respostas
Alex_182
13/10/2007
Caro ´geisonq´,
No POSTGRESQL você pode utilizar palavra chave ´to_char´ como no ORACLE, ou seja é possível fazer busca dessa maneira na seguinte forma.
EX1:
SELECT datacadastro
FROM usuario
WHERE datacadastro = TO_DATE = (´11/10/2007´,´DD/MM/YYYY´);
OBS: Lembrando que muito banco de dados como DEFAULT utiliza data na seguinte ordem ´MM/DD/YYYY´ caso dentro da sua tabela de usuário esteja da seguinte maneira ->´11/10/2007´, nesse caso o 11 seria MÊS, 10 o DIA e 2007 ANO, ou seja ao executar o SELECT dessa maneira você teria resultado em branco.
Agora para Ter esse resultado o exemplo seria dessa maneira:
EX2:
SELECT datacadastro
FROM usuario
WHERE datacadastro = TO_DATE = (´10/11/2007´, ´DD/MM/YYYY´);
Espero ter ajudado. =)
No POSTGRESQL você pode utilizar palavra chave ´to_char´ como no ORACLE, ou seja é possível fazer busca dessa maneira na seguinte forma.
EX1:
SELECT datacadastro
FROM usuario
WHERE datacadastro = TO_DATE = (´11/10/2007´,´DD/MM/YYYY´);
OBS: Lembrando que muito banco de dados como DEFAULT utiliza data na seguinte ordem ´MM/DD/YYYY´ caso dentro da sua tabela de usuário esteja da seguinte maneira ->´11/10/2007´, nesse caso o 11 seria MÊS, 10 o DIA e 2007 ANO, ou seja ao executar o SELECT dessa maneira você teria resultado em branco.
Agora para Ter esse resultado o exemplo seria dessa maneira:
EX2:
SELECT datacadastro
FROM usuario
WHERE datacadastro = TO_DATE = (´10/11/2007´, ´DD/MM/YYYY´);
Espero ter ajudado. =)
GOSTEI 0
Alex_182
13/10/2007
Caro ´geisonq´
Desculpa .. nesse código tem um erro de sintaxe ...
código ficaria assim. ..
SELECT datacadastro
FROM usuario
WHERE datacadastro = TO_DATE (´10/11/2007´, ´DD/MM/YYYY´);
e NÃO Assim:
SELECT datacadastro
FROM usuario
WHERE datacadastro = TO_DATE = (´10/11/2007´, ´DD/MM/YYYY´);
=]
. . .
Desculpa .. nesse código tem um erro de sintaxe ...
código ficaria assim. ..
SELECT datacadastro
FROM usuario
WHERE datacadastro = TO_DATE (´10/11/2007´, ´DD/MM/YYYY´);
e NÃO Assim:
SELECT datacadastro
FROM usuario
WHERE datacadastro = TO_DATE = (´10/11/2007´, ´DD/MM/YYYY´);
=]
. . .
GOSTEI 0
Mleal
13/10/2007
Geiso,
Por que vc não seta a data (pelo SET datestyle to dmy) para eliminar a conversão. Tenho uma aplicação rodando no VB6 X PostgreSQL (usando o driver ODBC) e as seguintes consultas funcionam perfeitamente:
SELECT * FROM movto WHERE dt_mov=´31/12/2007´;
SELECT * FROM movto WHERE EXTRACT(month FROM dt_mov)=12;
SELECT * FROM movto WHERE dt_mov>=´13/12/2007´ AND dt_mov<=´31/12/2007´;
abçs
MLeal :P
Por que vc não seta a data (pelo SET datestyle to dmy) para eliminar a conversão. Tenho uma aplicação rodando no VB6 X PostgreSQL (usando o driver ODBC) e as seguintes consultas funcionam perfeitamente:
SELECT * FROM movto WHERE dt_mov=´31/12/2007´;
SELECT * FROM movto WHERE EXTRACT(month FROM dt_mov)=12;
SELECT * FROM movto WHERE dt_mov>=´13/12/2007´ AND dt_mov<=´31/12/2007´;
abçs
MLeal :P
GOSTEI 0
Mleal
13/10/2007
Geiso,
Complementando a resposta anterior, se vc tiver um índice no campo dt_mov, o PostgreSQL o utiliza automaticamente nas consultas que exemplifiquei.
abçs.
MLeal
Complementando a resposta anterior, se vc tiver um índice no campo dt_mov, o PostgreSQL o utiliza automaticamente nas consultas que exemplifiquei.
abçs.
MLeal
GOSTEI 0