Oswaldo,

Valew mesmo...funcionou, e obrigado pela explicação.
Melhor que resolver o problema é conhecer o problema.


WWW.V7V.COM.BR
Sidnei Vladisauskis 
EMAIL: [EMAIL PROTECTED]
MSN: [EMAIL PROTECTED]
SKYPE: sidneivl 
TEL.: 55 (11) 3717-4071
CEL.: 55 (11) 8116-6925


-----Mensagem original-----
De: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] Em nome de Osvaldo Rosario
Kussama
Enviada em: terça-feira, 10 de abril de 2007 15:06
Para: Grupo de Usuários do PostgreSQL no Brasil
Assunto: Re: [PostgreSQL-Brasil] ajuda - select para data de aniversário.

Sidnei Vladisauskis escreveu:
> Fala pessoal,
> Semana passada estive perguntando como fazer um select para os usuários
que
> fazem aniversário no dia corrente.
> 
> Nosso amigo Adriano mandou o link
>
http://pgdocptbr.sourceforge.net/pg80/functions-datetime.html#FUNCTIONS-DATE
> TIME-EXTRACT
> No qual li e reli, aprendi coisas importantes sobre data.
> 
> Mas to perdido em fazer um select dentro de uma VIEW que me retorna só os
> usuários que fazem aniversário aquele dia.
> 
> Eu tentei o seguinte:
> SELECT usu_id, usu_nascimento FROM usuarios WHERE date_part('month',
> TIMESTAMP usu_nascimento) = date_part('month', CURRENT_DATE) and
> date_part('day', TIMESTAMP usu_nascimento) = date_part('day',
CURRENT_DATE);
> 
> E
> 
> SELECT usu_id, usu_nascimento FROM usuarios WHERE extract(MONTH FROM
> TIMESTAMP usu_nascimento) = extract(MONTH FROM CURRENT_DATE) and
> extract(MONTH FROM TIMESTAMP usu_nascimento) = extract(MONTH FROM
> CURRENT_DATE);
> 
> Mas ele da o erro:
> ERROR: syntax error at or near "usu_nascimento"
> SQL state: 42601
> Character: 80
> 
> Que seria nessa parte:
> date_part('month', TIMESTAMP usu_nascimento)
> 
> Testei colocando o timestamp na mão ('1972-04-10' e '2007-04-10' nos
> respectivos campos) e me retornou.
> 
> A pergunta pode ser meio newbe, mas confesso que to perdidão
> :o)
> 


Complementando:
O problema nas sentenças acima está no cast. Você pode utilizar:
CAST( usu_nascimento AS TIMESTAMP) ou
usu_nascimento::TIMESTAMP

A expressão "TIMESTAMP usu_nascimento" é inválida. Você só pode utilizar 
esta forma com strings, por ex.: TIMESTAMP '2007-04-10'.

Veja:
item 4.2.8. Type Casts em:
http://www.postgresql.org/docs/8.2/interactive/sql-expressions.html#SQL-SYNT
AX-TYPE-CASTS
e
item 4.1.2.5. Constants of Other Types em:
http://www.postgresql.org/docs/8.2/interactive/sql-syntax-lexical.html#SQL-S
YNTAX-CONSTANTS
"The ::, CAST(), and function-call syntaxes can also be used to specify 
run-time type conversions of arbitrary expressions, as discussed in 
Section 4.2.8. But the form type 'string' can only be used to specify 
the type of a literal constant."

[]s
Osvaldo
_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
Antes de perguntar consulte o manual
http://pgdocptbr.sourceforge.net/

Para editar suas opções ou sair da lista acesse a página da lista em:
http://pgfoundry.org/mailman/listinfo/brasil-usuarios



_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
Antes de perguntar consulte o manual
http://pgdocptbr.sourceforge.net/

Para editar suas opções ou sair da lista acesse a página da lista em:
http://pgfoundry.org/mailman/listinfo/brasil-usuarios

Responder a