重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

こんにちは。
PostgreSQL+PerlでCGIを書いています。
テーブルのtimezonetz型の値の最大値を取り出して加工したいのですが、
うまくいかず悩んでおります。
単に最大値を取り出すだけなら、
SELECT max(lastdate) FROM table;
でできました。しかし、この値を
$sth->execute();
$last=$sth->fetchrow;
として取り出しても、文字列となってしまいます。

perl側で加工するのは、フォーマットが環境によって違ったりする心配がありましたので、サーバー側でできないものかと思い、

SELECT EXTRACT(EPOS FROM TIMESTAMPTZ lastdate) FROM table;
としてみましたが、
「"max"またはその近辺で構文エラー」とメッセージが出てしまいます。
こういった場合、いったいどのように書けばよいのでしょうか?

PostgreSQLのバージョンの確認方法がわからず、バージョンは不明なのですが、つい先日インストールしてもらったばかりなので、そう古いものではないと思います。
OSはunix(Solaris)です。よろしくお願いします。

A 回答 (1件)

はじめまして、titokaniさん



SELECT EXTRACT(EPOCH FROM lastdate) FROM table ORDER BY lastdate DESC LIMIT 1

これでいかがでしょうか?

一応、以下の構成で試しています。

OS:VineLinux4.2
Database:PosgreSQL8.2
pgAdmin3(WinXp)

参考URL:http://osb.sra.co.jp/PostgreSQL/Manual/PostgreSQ …
    • good
    • 0
この回答へのお礼

TIMESTAMPTZが余計だったんですね。(EPOSはタイプミスでした)。

無事動きました。ありがとうございました。

お礼日時:2008/03/27 16:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す