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-SYNTAX-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-SYNTAX-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
