Обсуждение: syntax for using function parameter in to_char
I am trying to write a function that will take a big int as a paramter and
return a formatted date string. The dates in the system I am using are all
stored as bigint values ( based Java EPOCH ) to I need this function to
make some sense of the date.
Here is my code:
CREATE FUNCTION java_date( bigint ) RETURNS text AS ' select to_char(\'epoch\'::datetime + \'$1 seconds\'::interval,
\'dd/mm/yyyy hh:mi\') as RESULT ' LANGUAGE 'sql';
The problem seems to be that the $1 in the to_char function is not getting
parsed with the actual value of $1.
If I execute the following from the command line, I get the expected
response:
=> select to_char('epoch'::datetime + '1012437127 seconds'::interval,
'dd/mm/yyyy hh:mi');
to_char
------------------30/01/2002 06:32
(1 row)
All I am trying to do is move the functionality of this SQL statement to a
function so I can easily reuse it.
Any help would be appreciated.
Kevin Barrett
Kevin,
> CREATE FUNCTION java_date( bigint ) RETURNS text AS '
> select to_char(\'epoch\'::datetime + \'$1 seconds\'::interval,
> \'dd/mm/yyyy hh:mi\') as RESULT
> '
> LANGUAGE 'sql';
Try this instead:
CREATE FUNCTION java_date( bigint ) RETURNS text AS ' select to_char(''epoch''::datetime + (CAST($1
ASVARCHAR) || ''seconds'')::interval, ''dd/mm/yyyy hh:mi'') as RESULT
'
LANGUAGE 'sql';
Got it? Check, though, a "CAST (bigint as varchar)" may or may notwork.
-Josh
______AGLIO DATABASE SOLUTIONS___________________________ Josh Berkus Complete
informationtechnology josh@agliodbs.com and data management solutions (415) 565-7293 for law firms, small
businesses fax 621-2533 and non-profit organizations. San Francisco