ここから本文です

postgreSQLで

vsp********さん

2019/10/514:10:45

postgreSQLで

CREATE FUNCTION F_T(t TIMESTAMP)
RETURNS TIMESTAMP AS $$

SELECT t

$$ LANGUAGE SQL;

SELECT * FROM F_T(NOW());

とやると、NOW()の部分がエラーになりました。関数の引数に別の関数の実行結果を渡すにはどうやればできますか?

閲覧数:
5
回答数:
1

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

2019/10/514:41:49

実は、大きな勘違いをしています。
PostgreSQL
には、実は、
TIMESTAMP

TIMESTAMP WITH TIME ZONE
という似たような別の型があるのです。
NOW() 関数は、実は、TIMESTAMP WITH TIME ZONEです。

まず、TIMESTAMP で統一したい場合は、
NOW() でなく localtimestamp を使います。

SELECT * FROM F_T(localtimestamp);

TIMESTAMP WITH TIME ZONE で統一したい場合は、

CREATE FUNCTION F_T(t TIMESTAMP WITH TIME ZONE)
RETURNS TIMESTAMP WITH TIME ZONE AS $$

SELECT t

$$ LANGUAGE SQL;

と関数を作って、
SELECT * FROM F_T(NOW());
とやってください。

質問した人からのコメント

2019/10/5 20:07:23

たいへん助かりました。ありがとうございます。日付の扱いでまだわかっていない部分があることに気がついたので、今後精進しようと思います。


https://github.com/konoar/TestPQ1

LOCALTIMESTAMPにしたら呼び出せました。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる