[pgsql-jp: 26174] SELECT TIMESTAMP(CURRENT_DATE, CURRENT_TIME) について

Norikatsu Shigemura nork @ cityfujisawa.ne.jp
2002年 5月 29日 (水) 07:09:51 JST


重村法克です。

	SELECT CURRENT_DATE + CURRENT_TIME すればとりあえずの目標は
	達成するので困ってないといえば困ってないのですが, SELECT
	TIMESTAMP(*) の結果が思っていたよりも機能してないように見
	受けられるということで御相談です。機能してないというのは
	parser: parse error at or near * というエラーになってしま
	います。検証した結果は下記 3 環境ですが, 7.2 系列の話という
	ことで(7.1.3 では一部問題無い)。

	PostgreSQL オフィシャルマニュアル P.107 を参考に
	TEST=# SELECT timestamp(date '2000-12-25');
	ERROR:  parser: parse error at or near "date"

	他にも SELECT TIMESTAMP(CURRENT_DATE); といったパターンや
	表題のパターン, '' によるテキスト('2002-05-29', '06:56:11')
	とそれをキャスト(DATE, TIME)したもの, といったパターンで
	parse error が発生します。

1. SELECT TIMESTAMP(CURRENT_DATE);
2. SELECT TIMESTAMP('2000-12-25');
3. SELECT TIMESTAMP(DATE '2000-12-25');

4. SELECT TIMESTAMP(CURRENT_TIME);
5. SELECT TIMESTAMP('06:56:11');
6. SELECT TIMESTAMP(TIME '06:56:11');

7. SELECT TIMESTAMP(CURRENT_DATE, CURRENT_TIME);
8. SELECT TIMESTAMP('2002-05-29', '06:56:11');
9. SELECT TIMESTAMP(DATE '2002-05-29', TIME '06:56:11');


	7.1.3	7.2
-------+-------+--------
1	○	×
2	○	×
3	○	×
4	×	×	(これは当然)
5	×	×	(これは当然)
6	×	×	(これは当然)
7	○	×
8	×	×	(Function 'timestamp(unknown, unknown)' does not exist)
9	○	×


TESTED by
-------------------------------------------------------------------
 PostgreSQL 7.1.3 on i386--freebsd4.4, compiled by GCC 2.95.3
 PostgreSQL 7.2 on i386-portbld-freebsd4.5, compiled by GCC 2.95.3
 PostgreSQL 7.2.1 on i386-portbld-freebsd4.5, compiled by GCC 2.95.3


P.S. 余談
 CURRENT_TIME の 00:00 からの経過時間(分単位)の取得方法について調べて
 いました。SELECT TO_CHAR(CURRENT_TIME, 'mmmm') できれば何も言うこと
 無いのですが, SELECT TO_CHAR(CURRENT_TIMESTAMP, 'SSSS')::INTEGER / 60
 あたりが現実的かな:-)。このあたり調査中に気がつきました。
 



pgsql-jp メーリングリストの案内