Обсуждение: Migration from DB2 to PostgreSQL-TIMESTAMP(arg1,arg1)
While migrating my application from DB2 to PostgreSQL. I want to migrate TIMESTAMP() function of DB2 into PostgreSQL. Example in DB2: #SELECT TIMESTAMP('2013-01-01','12:13:14') FROM SYSIBM.SYSDUMMY1 1 -------------------------- 2013-01-01-12.13.14.000000 1 record(s) selected. ========================== Example PostgreSQL: #SELECT TIMESTAMP('2013-01-01','12:13:14'); ERROR: syntax error at or near "'2013-01-01'" at character 18 STATEMENT: SELECT TIMESTAMP('2013-01-01','12:13:14'); ERROR: syntax error at or near "'2013-01-01'" LINE 1: SELECT TIMESTAMP('2013-01-01','12:13:14'); After executing above SQL I am getting error. I checked definition of TIMESTAMP(). It is as follows: test=# \df timestamp List of functions Schema | Name | Result data type | Argument data types | Type ------------+-----------+-----------------------------+--------------------------------------+-------- pg_catalog | timestamp | timestamp without time zone | abstime | normal pg_catalog | timestamp | timestamp without time zone | date | normal pg_catalog | timestamp | timestamp without time zone | date, time without time zone | normal pg_catalog | timestamp | timestamp without time zone | timestamp without time zone, integer | normal pg_catalog | timestamp | timestamp without time zone | timestamp with time zone | normal (5 rows) As we can see TIMESTAMP() hast two arguments date and time without time stamp but still it is giving error to me. Please reply if any suggestion. -- View this message in context: http://postgresql.1045698.n5.nabble.com/Migration-from-DB2-to-PostgreSQL-TIMESTAMP-arg1-arg1-tp5761389.html Sent from the PostgreSQL - general mailing list archive at Nabble.com.
I have done some more try as follows: #select timestamp(current_date); ERROR: syntax error at or near "current_date" at character 18 STATEMENT: select timestamp(current_date); ERROR: syntax error at or near "current_date" LINE 1: select timestamp(current_date); ====================================================== #SELECT TIMESTAMP(to_date('2013-01-01','YYYY-MM-DD')); ERROR: syntax error at or near "to_date" at character 18 STATEMENT: SELECT TIMESTAMP(to_date('2013-01-01','YYYY-MM-DD')); ERROR: syntax error at or near "to_date" LINE 1: SELECT TIMESTAMP(to_date('2013-01-01','YYYY-MM-DD')); ====================================================== select timestamp(current_date,current_time); ERROR: syntax error at or near "current_date" at character 18 STATEMENT: select timestamp(current_date,current_time); ERROR: syntax error at or near "current_date" LINE 1: select timestamp(current_date,current_time); ====================================================== #SELECT TIMESTAMP(to_date('2013-01-01','YYYY-MM-DD'),'17:15:43'::time); ERROR: syntax error at or near "to_date" at character 18 STATEMENT: SELECT TIMESTAMP(to_date('2013-01-01','YYYY-MM-DD'),'17:15:43'::time); ERROR: syntax error at or near "to_date" LINE 1: SELECT TIMESTAMP(to_date('2013-01-01','YYYY-MM-DD'),'17:15:4... -- View this message in context: http://postgresql.1045698.n5.nabble.com/Migration-from-DB2-to-PostgreSQL-TIMESTAMP-arg1-arg1-tp5761389p5761390.html Sent from the PostgreSQL - general mailing list archive at Nabble.com.
On 27/06/2013 12:51, sachin kotwal wrote: > I have done some more try as follows: > > #select timestamp(current_date); > ERROR: syntax error at or near "current_date" at character 18 > STATEMENT: select timestamp(current_date); > ERROR: syntax error at or near "current_date" > LINE 1: select timestamp(current_date); > ====================================================== If you're trying to convert a string to a timestamp as in your first email, you probably want to_timestamp(): http://www.postgresql.org/docs/9.2/static/functions-formatting.html Otherwise, current_timestamp and friends produce the current date & time: http://www.postgresql.org/docs/9.2/static/functions-datetime.html HTH, Ray. > > #SELECT TIMESTAMP(to_date('2013-01-01','YYYY-MM-DD')); > ERROR: syntax error at or near "to_date" at character 18 > STATEMENT: SELECT TIMESTAMP(to_date('2013-01-01','YYYY-MM-DD')); > ERROR: syntax error at or near "to_date" > LINE 1: SELECT TIMESTAMP(to_date('2013-01-01','YYYY-MM-DD')); > ====================================================== > > select timestamp(current_date,current_time); > ERROR: syntax error at or near "current_date" at character 18 > STATEMENT: select timestamp(current_date,current_time); > ERROR: syntax error at or near "current_date" > LINE 1: select timestamp(current_date,current_time); > ====================================================== > > #SELECT TIMESTAMP(to_date('2013-01-01','YYYY-MM-DD'),'17:15:43'::time); > ERROR: syntax error at or near "to_date" at character 18 > STATEMENT: SELECT > TIMESTAMP(to_date('2013-01-01','YYYY-MM-DD'),'17:15:43'::time); > ERROR: syntax error at or near "to_date" > LINE 1: SELECT TIMESTAMP(to_date('2013-01-01','YYYY-MM-DD'),'17:15:4... > > > > -- > View this message in context: http://postgresql.1045698.n5.nabble.com/Migration-from-DB2-to-PostgreSQL-TIMESTAMP-arg1-arg1-tp5761389p5761390.html > Sent from the PostgreSQL - general mailing list archive at Nabble.com. > > -- Raymond O'Donnell :: Galway :: Ireland rod@iol.ie
I've done something weird:
CREATE OR REPLACE FUNCTION "timestamp"(_date date, _time time) RETURNS timestamp AS $$
SELECT _date + _time;
$$ LANGUAGE sql;
SELECT "timestamp"('2013-01-01'::date, '12:00:00'::time);
It worked, but you will need explict cast and quote the timestamp function name... Many people would not like this.
2013/6/27 Raymond O'Donnell <rod@iol.ie>
On 27/06/2013 12:51, sachin kotwal wrote:If you're trying to convert a string to a timestamp as in your first
> I have done some more try as follows:
>
> #select timestamp(current_date);
> ERROR: syntax error at or near "current_date" at character 18
> STATEMENT: select timestamp(current_date);
> ERROR: syntax error at or near "current_date"
> LINE 1: select timestamp(current_date);
> ======================================================
email, you probably want to_timestamp():
http://www.postgresql.org/docs/9.2/static/functions-formatting.html
Otherwise, current_timestamp and friends produce the current date & time:
http://www.postgresql.org/docs/9.2/static/functions-datetime.html
HTH,
Ray.Raymond O'Donnell :: Galway :: Ireland
>
> #SELECT TIMESTAMP(to_date('2013-01-01','YYYY-MM-DD'));
> ERROR: syntax error at or near "to_date" at character 18
> STATEMENT: SELECT TIMESTAMP(to_date('2013-01-01','YYYY-MM-DD'));
> ERROR: syntax error at or near "to_date"
> LINE 1: SELECT TIMESTAMP(to_date('2013-01-01','YYYY-MM-DD'));
> ======================================================
>
> select timestamp(current_date,current_time);
> ERROR: syntax error at or near "current_date" at character 18
> STATEMENT: select timestamp(current_date,current_time);
> ERROR: syntax error at or near "current_date"
> LINE 1: select timestamp(current_date,current_time);
> ======================================================
>
> #SELECT TIMESTAMP(to_date('2013-01-01','YYYY-MM-DD'),'17:15:43'::time);
> ERROR: syntax error at or near "to_date" at character 18
> STATEMENT: SELECT
> TIMESTAMP(to_date('2013-01-01','YYYY-MM-DD'),'17:15:43'::time);
> ERROR: syntax error at or near "to_date"
> LINE 1: SELECT TIMESTAMP(to_date('2013-01-01','YYYY-MM-DD'),'17:15:4...
>
>
>
> --
> View this message in context: http://postgresql.1045698.n5.nabble.com/Migration-from-DB2-to-PostgreSQL-TIMESTAMP-arg1-arg1-tp5761389p5761390.html
> Sent from the PostgreSQL - general mailing list archive at Nabble.com.
>
>
--
rod@iol.ie
--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general
Daniel Cristian Cruz
クルズ クリスチアン ダニエル
On 2013-06-27 20:43, sachin kotwal wrote: > While migrating my application from DB2 to PostgreSQL. > > I want to migrate TIMESTAMP() function of DB2 into PostgreSQL. > > Example in DB2: > #SELECT TIMESTAMP('2013-01-01','12:13:14') FROM SYSIBM.SYSDUMMY1 > > 1 > -------------------------- > 2013-01-01-12.13.14.000000 > > 1 record(s) selected. > ========================== > > Example PostgreSQL: > > #SELECT TIMESTAMP('2013-01-01','12:13:14'); > ERROR: syntax error at or near "'2013-01-01'" at character 18 > STATEMENT: SELECT TIMESTAMP('2013-01-01','12:13:14'); > ERROR: syntax error at or near "'2013-01-01'" > LINE 1: SELECT TIMESTAMP('2013-01-01','12:13:14'); > > After executing above SQL I am getting error. > > I checked definition of TIMESTAMP(). > It is as follows: > test=# \df timestamp > List of functions > Schema | Name | Result data type | Argument > data types | Type > ------------+-----------+-----------------------------+--------------------------------------+-------- > pg_catalog | timestamp | timestamp without time zone | abstime > | normal > pg_catalog | timestamp | timestamp without time zone | date > | normal > pg_catalog | timestamp | timestamp without time zone | date, time without > time zone | normal > pg_catalog | timestamp | timestamp without time zone | timestamp without > time zone, integer | normal > pg_catalog | timestamp | timestamp without time zone | timestamp with time > zone | normal > (5 rows) > > As we can see TIMESTAMP() hast two arguments date and time without time > stamp but still it is giving error to me. > > Please reply if any suggestion. > > > > > -- > View this message in context: http://postgresql.1045698.n5.nabble.com/Migration-from-DB2-to-PostgreSQL-TIMESTAMP-arg1-arg1-tp5761389.html > Sent from the PostgreSQL - general mailing list archive at Nabble.com. > > Hi, # SELECT pg_catalog.timestamp('2013-01-01'::date, '12:13:14'::time); timestamp --------------------- 2013-01-01 12:13:14 (1 row)
On 6/27/2013 4:51 AM, sachin kotwal wrote: > #select timestamp(current_date); try... current_date::timestamptz or.... cast current_date as timestamptz -- john r pierce 37N 122W somewhere on the middle of the left coast
Using your link http://www.postgresql.org/docs/9.2/static/functions-formatting.html In DB2 when I use following command I am getting output combined date and time i passed to function. #SELECT TIMESTAMP('2013-01-01','12:13:14') FROM SYSIBM.SYSDUMMY1 1 -------------------------- 2013-01-01-12.13.14.000000 1 record(s) selected. ========================== If I execute same command with TO_TIMESTAMP() function I am getting default date. SELECT TO_TIMESTAMP('2013-01-01','12:13:14'); to_timestamp --------------------------------- 0001-01-01 00:00:00+05:53:28 BC (1 row) So output is different, so I can not use TO_TIMESTAMP() function as it is. -- View this message in context: http://postgresql.1045698.n5.nabble.com/Migration-from-DB2-to-PostgreSQL-TIMESTAMP-arg1-arg1-tp5761389p5761626.html Sent from the PostgreSQL - general mailing list archive at Nabble.com.
>I've done something weird: >CREATE OR REPLACE FUNCTION "timestamp"(_date date, _time time) RETURNS timestamp AS $$ >SELECT _date + _time; >$$ LANGUAGE sql; >SELECT "timestamp"('2013-01-01'::date, '12:00:00'::time); Good one. function with above definition is already present in pg_catalog. so no need to define new function.(3 rd row) \df timestamp List of functions Schema | Name | Result data type | Argument data types | Type ------------+-----------+-----------------------------+--------------------------------------+-------- pg_catalog | timestamp | timestamp without time zone | abstime | normal pg_catalog | timestamp | timestamp without time zone | date | normal pg_catalog | timestamp | timestamp without time zone | date, time without time zone | normal pg_catalog | timestamp | timestamp without time zone | timestamp without time zone, integer | normal pg_catalog | timestamp | timestamp without time zone | timestamp with time zone | normal (5 rows) But why this function requires "" to get execute. -- View this message in context: http://postgresql.1045698.n5.nabble.com/Migration-from-DB2-to-PostgreSQL-TIMESTAMP-arg1-arg1-tp5761389p5761628.html Sent from the PostgreSQL - general mailing list archive at Nabble.com.