2009/12/29 Adrian Klaver <aklaver(at)comcast(dot)net>:
> On Tuesday 29 December 2009 5:01:03 am Osvaldo Kussama wrote:
>> 2009/12/24 Israel Brewster <israel(at)frontierflying(dot)com>:
>> > This is sort of a PostgreSQL question/sort of a general SQL question, so
>> > I apologize if this isn't the best place to ask. At any rate, I know in
>> > PostgreSQL you can issue a command like 'SELECT "time"(timestamp_column)
>> > from table_name' to get the time part of a timestamp. The problem is that
>> > this command for some reason requires quotes around the "time" function
>> > name, which breaks the command when used in SQLite (I don't know about
>> > MySQL yet, but I suspect the same would be true there). The program I am
>> > working on is designed to work with all three types of databases (SQLite,
>> > PostgreSQL, and MySQL) so it would be nice (save me some programing) if
>> > there was a single SQL statement to get the time portion of a timestamp
>> > that would work with all three. Is there such a beast? On a related note,
>> > why do we need the quotes around "time" for the function to work in
>> > PostgreSQL? the date function doesn't need them, so I know it's not just
>> > a general PostgreSQL formating difference. Thanks :)
>> > -----------------------------------------------
>> It's a bug?
>> bdteste=# SELECT time(CURRENT_TIMESTAMP);
>> ERRO: erro de sintaxe em ou próximo a "CURRENT_TIMESTAMP"
>> LINE 1: SELECT time(CURRENT_TIMESTAMP);
>> bdteste=# SELECT pg_catalog.time(CURRENT_TIMESTAMP);
>> (1 registro)
>> bdteste=# SELECT "time"(CURRENT_TIMESTAMP);
>> (1 registro)
>> bdteste=# SELECT $$time$$(CURRENT_TIMESTAMP);
>> ERRO: erro de sintaxe em ou próximo a "("
>> LINE 1: SELECT $$time$$(CURRENT_TIMESTAMP);
> It is documented behavior.
> To quote from here:
> " It is also possible to specify a type cast using a function-like syntax:
> typename ( expression )
> However, this only works for types whose names are also valid as function names.
> For example, double precision cannot be used this way, but the equivalent
> float8 can. Also, the names interval, time, and timestamp can only be used in
> this fashion if they are double-quoted, because of syntactic conflicts.
> Therefore, the use of the function-like cast syntax leads to inconsistencies
> and should probably be avoided.
> Note: The function-like syntax is in fact just a function call. When one of
> the two standard cast syntaxes is used to do a run-time conversion, it will
> internally invoke a registered function to perform the conversion. By
> convention, these conversion functions have the same name as their output type,
> and thus the "function-like syntax" is nothing more than a direct invocation of
> the underlying conversion function. Obviously, this is not something that a
> portable application should rely on. For further details see CREATE CAST. "
Adrian and Alvaro, thanks for explanation.
In response to
pgsql-general by date
|Next:||From: Michael Fork||Date: 2009-12-29 17:08:25|
|Subject: Planner Row Estimate with Function|
|Previous:||From: svcntk||Date: 2009-12-29 16:52:12|
|Subject: esql vs libpq|