Thread: Extract Function
I am trying to use the EXTRACT function in pl/pgsql and running into a problem.
This is the command:
SELECT EXTRACT(EPOCH FROM TIMESTAMP variable_name) INTO Temp;
The variable_name is of type text (I've also tried it as type timestamp), but the parser breaks when it attempts to perform this function. It works great when I substitute the variable_name with '2004-1-10 00:00:00' , however, when I use a variable, it doesn't.
Any one have any ideas on how I can get variable substitution to work in my function using EXTRACT?
Thanks,
Derrick
On Fri, 19 Mar 2004, Derrick Betts wrote: > I am trying to use the EXTRACT function in pl/pgsql and running into a problem. > > This is the command: > > SELECT EXTRACT(EPOCH FROM TIMESTAMP variable_name) INTO Temp; > > The variable_name is of type text (I've also tried it as type > timestamp), but the parser breaks when it attempts to perform this > function. It works great when I substitute the variable_name with > '2004-1-10 00:00:00' , however, when I use a variable, it doesn't. TIMESTAMP <foo> is meant for timestamp literals. If you want to convert a value from one type to another, you probably want something like CAST(variable_name AS TIMESTAMP)
On Fri, Mar 19, 2004 at 07:44:25 -0700, Derrick Betts <Derrick@Blue-Axis.com> wrote: > I am trying to use the EXTRACT function in pl/pgsql and running into a problem. > > This is the command: > > SELECT EXTRACT(EPOCH FROM TIMESTAMP variable_name) INTO Temp; > > The variable_name is of type text (I've also tried it as type timestamp), but the parser breaks when it attempts to performthis function. It works great when I substitute the variable_name with '2004-1-10 00:00:00' , however, when I usea variable, it doesn't. > > Any one have any ideas on how I can get variable substitution to work in my function using EXTRACT? I don't think typename variable is a valid operation. You would need to use CAST or :: to do a typecast. Probably you should just leave out "TIMESTAMP" from your example.
"Derrick Betts" <Derrick@Blue-Axis.com> writes: > This is the command: > SELECT EXTRACT(EPOCH FROM TIMESTAMP variable_name) INTO Temp; You're confusing the EXTRACT function with the notation for a literal constant of a specific type. The function is just EXTRACT(EPOCH FROM timestamp-expression) An example that involves a literal constant could be written either EXTRACT(EPOCH FROM TIMESTAMP '2004-1-10 00:00:00') EXTRACT(EPOCH FROM '2004-1-10 00:00:00'::TIMESTAMP) but when you are dealing with a variable you don't use the TIMESTAMP decoration, because the parser already knows what datatype the variable is. So EXTRACT(EPOCH FROM timestamp-variable) regards, tom lane