[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 メーリングリストの案内