トップページ⇒php
933コメント644KB

PHP + PostgreSQL

■ このスレッドは過去ログ倉庫に格納されています
0001りさあ NGNG
語りません?
0202153です2001/04/22(日) 10:09ID:GJXSK57Q
>>201
実はスクリプト自体は皆さんのご指摘を元に作成出来ていたのですが、
ずっとエラーが出続けてました。
で、oid=$last_oidの部分が多分問題なのかと思って、ここを色々
いじくっていたんです。
解決出来たのは、もう一度スクリプトをじっくりと眺めていて、「"」
と「'」が2か所抜けておりました・・・
0203名無しさん@お腹いっぱい2001/05/05(土) 16:54ID:ejxtLiFA
初歩的な質問ですいません。

PHPで外部からきたデータに大して、そのままSQL文をつくると、例えば、$a_post_datumが"これは'クォーテーション'です"みたいなので、

pg_exec($conn, "select col from a_table where col2 = '$a_post_datum'");

みたいにすると文字列展開で

"select col from a_table where col2 = 'これは'クォーテーション'です'"

みたいになって、SQL文が成立しなくなるんだけど、みなさん、こういうのにはどう対処しているんでしょうか?
0204名無しさん@お腹いっぱい。2001/05/05(土) 17:35ID:???
' を \' に置換するだけ。
02052032001/05/05(土) 18:30ID:ejxtLiFA
>>204
%と_は?
0206名無しさん@お腹いっぱい。2001/05/05(土) 20:35ID:???
前にエスケープ文字\ を入れろ。つか基本だべ?
02072032001/05/06(日) 16:11ID:kun4pZhs
'と%と_で全部?
0208名無しさん@お腹いっぱい。2001/05/06(日) 18:36ID:???
>>207
シングルクォートのときはシングルクォートの前に入れるだけで良かったと思うけど。
0209名無しさん@お腹いっぱい。2001/05/07(月) 20:18ID:???
7.1からvacuumいらなくなるって話聞いたことあったけれど、気のせい?
これさえいらなければなーとつくづく思うんだがね > PostgreSQL
0210名無しさん@お腹いっぱい。2001/05/07(月) 20:56ID:???
>>209
残念ながら気のせいです。
0211名無しさん@お腹いっぱい。2001/05/08(火) 18:58ID:???
PHPのPostgreSQLインターフェイスってUNIXソケットからローカルホストの
バックエンドに接続できないの?
pg_connectでエラーが出て、postmasterに-iをつけて起動しなおしたら
すんなり動くようになって、動くのはいいんだけれど、なんか気分悪い

親切な方教えてください
0212名無しさん@お腹いっぱい。2001/05/08(火) 19:19ID:Nor6.bTw
UNIXドメインのソケット経由で接続できるはずです(やったことないけど)。
マニュアルの、「LIXPostgreSQL 関数」を参照。
pg_connect()の実引数が微妙に違うみたいです。
02132112001/05/08(火) 20:09ID:???
>>212
http://www.php.net/manual/ja/ref.pgsql.php
の「表 1PostmasterとPHP」ってとこだね
ホスト名を明示しちゃうと、TCP/IP経由になっちゃうんだね
書いてあるとおりに書き換えたらUNIXソケットで接続してくれるようになったよ
どうもありがとう!
0214名無しさん@お腹いっぱい。2001/05/08(火) 20:54ID:???
あ、章番号が変わってるんだ。ごめん。

そろそろ、自動でマニュアルをダウンロードしてmknmzかけるしくみを
作っとかんといかんな。
02157742001/07/08(日) 23:52ID:AeZs44/g
postgreSQL7.0を入れたのですが、psqlの中でヒストリ機能が使えません。
カーソルの上を押したら、前に打ったコマンドが出るようにしたいのですが、
どうしたら良いでしょうか。
ちなみに、通常のコマンドラインではカーソルの上を押せば
前のコマンドが出ます。
0216名無しさん@お腹いっぱい。2001/07/09(月) 12:36ID:???
>>215

readline がないんじゃない?
0217名無しさん@お腹いっぱい。2001/07/09(月) 13:21ID:???
>>216
おそらくはそれが原因だね。あるけど見つからないとか。

>>215
OS はなんだろう?FreeBSD ?
./configure --with-libraries=/usr/local/lib ....
とかで解決できないか?
02187742001/07/09(月) 23:37ID:KhxN5./k
早速のご回答ありがとうございます。
readlineは入っています。
OSはRedHat7.1です。
libへのパスを設定してもダメでした。

---------------------------
$ ls /usr/lib/lib{readline,history}*
/usr/lib/libhistory.a /usr/lib/libhistory.so.4.1 /usr/lib/libreadline.so.4
/usr/lib/libhistory.so /usr/lib/libreadline.a /usr/lib/libreadline.so.4.1
/usr/lib/libhistory.so.4 /usr/lib/libreadline.so

$ ls /usr/include/readline/*
/usr/include/readline/chardefs.h /usr/include/readline/readline.h /usr/include/readline/tilde.h
/usr/include/readline/history.h /usr/include/readline/rlconf.h
/usr/include/readline/keymaps.h /usr/include/readline/rlstdc.h

$ rpm -qa |grep readline
readline-devel-4.1-5
readline-4.1-5
0219名無しさん@お腹いっぱい。2001/07/10(火) 02:12ID:???
>>218

libtermcap を入れてみよー
02202182001/07/10(火) 08:58ID:???
またまたご回答ありがとうございます。
libtermcapも入っておりました。
うーむ。
0221名無しさん@お腹いっぱい。2001/07/10(火) 16:49ID:???
>>220

となると、 config.log を見て readline を見つけそこなっている
原因を探るだねぇ
0222名無しさん@お腹いっぱい。2001/07/14(土) 11:38ID:ZarpnJWo
Warning: Unable to connect to PostgresSQL server: connectDBStart() -- connect() failed: Connection refused Is the postmaster running (with -i) at 'localhost' and accepting connections on TCP/IP port 5432? in
0223名無しさん@お腹いっぱい。2001/07/14(土) 11:39ID:ZarpnJWo
↑原因はなんでしょうか。
フツーにselectで,tableの内容を表示しようとするとこうなる。
当方,管理者ではないので,設定イジくれません。
0224名無しさん@お腹いっぱい。2001/07/15(日) 01:06ID:fduksvn.
pg_connect() でホスト名を空にしてないとか
0225初心者2001/07/23(月) 06:07ID:xOk2bt2U
postgresのあるテーブルのdisplay_date列にdate型を格納してるんですが、
今日の日付と一致する行を表示するにはどうすればいいのでしょうか?
0226名無しさん@お腹いっぱい。2001/07/23(月) 06:34ID:SYz87UN6
select * from "あるテーブル" where display_date = 'now'::date とか
02272252001/07/24(火) 02:01ID:goR17G.A
>>226さんありがおつございます。
で、cshで、.chsrcに「setenv TZ JST-9」としたものの、
psqlで、select 'now'::date;としても、7/24のはずが、
7/23(昨日の日付)が表示されてます。タイムゾーンが設定されていないようです。
postgresはunixとは別の独自のタイムゾーンを持つようだ、ということは、
マニュアルのdatetime-appendix.html
を見てなんとなくわかるのですが、しかしJSTに設定する方法が、これを見てもわかりません。
どうすればいいのでしょうか?
0228JAPU2001/07/24(火) 04:11ID:???
set timezone to 'JST-9';
ついでにいうと、確認のためには select 'now'::datetime; が吉かもしれないにょ。
0229225=2272001/07/25(水) 16:26ID:I8vfzaAc
>>228
すると、毎回set timezone to 'JST-9';の文章を実行しなければならないのですか_
あるいは、postgresの.chsrcみたいのがあればいいのですが・・・
0230名無しさん@お腹いっぱい。2001/07/25(水) 17:23ID:bOBsSY92
postmaster を起こしたやつの timezone になるはず。
0231ナナシファン2001/07/25(水) 19:13ID:xCgI2gSw
PHPでpg_pconnectを使ったときって、何かおかしくない?
ちゃんと動いているという事例を聞いたことがないんだけど、
期待通りに動いている人っている?
0232ほげ2001/07/25(水) 21:06ID:???
>>231
期待どおりにって、SQL投げられるし別に普通だけど。
0233 01/10/11 22:30ID:tBxjcP4c
0234名無しさん@お腹いっぱい。01/10/11 23:11ID:???
>ちゃんと動いているという事例を聞いたことがないんだけど、
狭い世界にお住まいなのですね。
0235Error40101/10/18 17:24ID:fbcY2f30
今日の発見。

pg_pconnect()を使うとqueryが速くなる。何故だ・・・。

name diff total
Start -
Query 0.0416 0.0416
Fetch 0.0217 0.0633
Stop 0.0031 0.0664

name diff total
Start -
Query 0.0186 0.0186
Fetch 0.0217 0.0403
Stop 0.0031 0.0435
0236Error40101/10/18 17:35ID:fbcY2f30
う、見づらいし、何が何だかわかんないね。
・Connectして
・Selectして
・ループで回ってFetchして
・表示する
プログラム。
Benchmark/Timer.php使用。

pg_connect()を使った場合
name    diff    total
Start     -
Connect   0.0185  0.0185
Query     0.0130  0.0315
Fetch Loop 0.0218  0.0533
Stop      0.0031  0.0564

pg_pconnect()を使った場合
name    diff    total
Start     -
Connect   0.0397  0.0397
Query     0.0438  0.0836
Fetch Loop 0.0217  0.1053
Stop      0.0031  0.1084
0237Error40101/10/18 17:37ID:???
すまぬ、pg_connect()とpg_pconnect()の場合が逆だった。
0238名無しさん@お腹いっぱい。01/11/05 22:38ID:I5P+61E/
age がてら。

PostgreSQL に限ったことではないのですが、
・電話番号
・郵便番号
どういう風にフィールド作ってます?

市外 CHAR(4),
局 CHAR(4),
番 CHAR(4)

前3 CHAR(3),
後4 CHAR(4)

みたいな感じ? それとも一つの TEXT/VARCHAR?
それぞれ長所短所あると思いますけど、
よろしかったらみなさまのご意見お聞かせください。

スレ違いならスマソ
0239名無しさん@お腹いっぱい。01/11/06 15:52ID:aGDSTcYL
あれ?
電話番号の市外局番ってMax4桁になったの?
0240名無しさん@お腹いっぱい。01/11/06 16:01ID:???
なったの?って昔からでんがな。
0241名無しさん@お腹いっぱい。01/11/06 16:44ID:???
つか、5桁もある
0242名無しさん@お腹いっぱい。01/11/06 18:24ID:y3LOZtVD
質問です。

PCを最近はじめ、今、PHP+PostgreSQLを勉強中の者です、
DBの、登録、削除、一覧表(毎10件)を、一つのスクリプトで実行したいのですが、一覧する際、最初の10件は、表示してくれるのですが、
11件目から〜が、表示できないで困っております。
自分で考えて作ったのは、メインページからラジオボタンで選択し、
PHPスクリプトの中で、if(もしくはswicth)で、各実行をしてます。
一覧で、submitをクリックすると、11件目から表示させたいんですけど、
どうしてなのか、表示できません。

説明下手でわかりにくいかもしれませんが、誰か、イイアドバイス、お願いします。
ド素人なので、その辺も考慮して、お願いします。
0243名無しさん@お腹いっぱい。01/11/06 18:34ID:OqD8s6xc
>>242
マンモス本読んだ?
0244>>24301/11/07 10:11ID:ieoCTquz
マンモス本読んだけど、いまいちよくわかんないんです^^;
0245名無しさん@お腹いっぱい。01/11/07 11:28ID:ieoCTquz
>>243
どの変(ページ数とか・・・)教えてくれると助かるんですが・・・。
0246名無しさん@お腹いっぱい。01/11/07 12:02ID:???
>>245
漏れが持ってる PHP3 用のやつでよければ 81 ページからあたり。
024724501/11/07 12:43ID:ieoCTquz
>>>246
自分が持ってるのは、PHP4なので^^;
0248名無しさん@お腹いっぱい。01/11/07 12:56ID:rEwaGgOJ
>>242
PHP4のやつはP144,145あたりを読めばいいかと。
でもPostgreSQLのselect文を理解してからのほうが
いいな。
024924201/11/07 14:14ID:ieoCTquz
もう少し、本読んで、勉強しなおします。
ご教授、ありがとうです。
0250その他01/11/09 16:03ID:vDpRquZJ
PostgreSQLのインストール後
regression testを行ったのですが、全てが「failed」
になってしまいました。けれども、createdbもcreatetableも
insertもselectも問題無しに出来ます。でも、あとあと支障とか
あるのでしょうか?知っている方がいらしたら教えて下さい。
0251hen02/02/07 13:36ID:Bho0YULV

item_id | item_name
1    | XX
2    | YY
というテーブルがあって
変数 $itemname = XX として

このときitem_id = "XX"のitem_idを取り出すにはどうすればいいのですか?

とりあえず
$sql = "select item.item_id from item
where item.item_name = $itemname"; //item_nameとコンボボックスのdataが一致する時のitem_id
$result = pg_Exec( $conn, $sql );
とやってみたけどPostgreSQL query failed: って帰ってきます・・
0252hen02/02/07 13:42ID:Bho0YULV
$sql = "select item_id from item
where item_name = \"$itemname\"";

すんません
これに変えるとAttribute 'XX'not found
0253名無しさん@お腹いっぱい。02/02/07 22:38ID:blA7jPNr
SQLで文字列は ' で囲む
0254  02/02/07 23:32ID:z4yCqxdv
いつも、教わってばっかりだから、
たまにわ、教えてやるヨ
$sql = "select item_id from item where item_name = '$itemname'";
って書くんだよ。
''で、変数を囲むんだよ、
これ最強
0255 02/02/07 23:33ID:t9L0Eq4j
http://pc.2ch.net/test/read.cgi/ad/1012670549/l50
http://pc.2ch.net/test/read.cgi/ad/1012670549/l50
http://pc.2ch.net/test/read.cgi/ad/1012670549/l50
http://pc.2ch.net/test/read.cgi/ad/1012670549/l50
http://pc.2ch.net/test/read.cgi/ad/1012670549/l50
http://pc.2ch.net/test/read.cgi/ad/1012670549/l50
http://pc.2ch.net/test/read.cgi/ad/1012670549/l50
http://pc.2ch.net/test/read.cgi/ad/1012670549/l50
http://pc.2ch.net/test/read.cgi/ad/1012670549/l50
http://pc.2ch.net/test/read.cgi/ad/1012670549/l50
http://pc.2ch.net/test/read.cgi/ad/1012670549/l50
http://pc.2ch.net/test/read.cgi/ad/1012670549/l50
0256marois02/02/10 22:51ID:MJ34x4JG
CGI版のPHP4をあるホスティングサービスで使っています。
pg_close($this->con);
のところで「pg_close -1」という値をクライアント(HTML上)
に返してきてしまうので困っています。
@を付けたり色々やってみたけど駄目。
同じスクリプトをPHP3で流すとOK。
ローカルのPHP4(Apache版)でもOK。
なにがいけないのでしょうか?
#このホスティングサービスPHPのサポートはしてくれないのです。
0257名無しさん@お腹いっぱい。02/02/11 06:04ID:yEMLRxJJ
pg_fetch_object()でPGSQL_NUM(数値配列)引数を付けた場合,
次のような$rcプロパティでどのようにアクセスすればフィールドを
参照できるのでしょうか。

$this->rc[$i] = pg_fetch_object($result, $i, PGSQL_NUM);
0258  02/02/11 18:01ID:???
>>256
pg_close($this->con); 自体を削除すればOK!
closeなんて、かかなくても、動く。
0259marois02/02/11 20:58ID:PVwY953h
>closeなんて、かかなくても、動く。
動くとは思いますが、問題は出ないでしょうか?
一連のスクリプトで何度もOPENするのですが。
#セッションは1つなのでしょうか?
#疑ってすみません。
0260名無しさん@お腹いっぱい。02/02/11 21:08ID:???
ついさっきOIDの表示の仕方忘れて大変だった、
select oid, * from table;
って書けばいいんだけどoid,とか記憶から消えてたね。
PostgreSQLの解説系のサイトどこに行ってもoid,の事には
あんまり触れてもないしgoogleでも引っかからないし・・・。

そういえばPostgreSQL関係で新しい本出てたね、あれなんだっけ?
0261  02/02/12 00:06ID:???
>>259
書かなくても,問題でない。
どーせ、commitとか、してないんだろ。
そんな、PGだから、closeなんて、不要

0262marois02/02/12 01:39ID:Ixi/JtIe
失礼な^^;
テーブルの更新にはトランザクションは使ってます。
一応複数SQL流すので保険として。

話はちょっとそれますが、サンプルプログラムでコネクションをグローバル
変数に保持して、それを最後まで使い続けるプログラムを見たことがありま
す。最後にユーザーがLogoutしてくれればpg_close出来ますが、いきなり
ブラウザをばっさり終了されてしまうと出来ないですよね。
コネクションにあんまり神経質になんなくても良いのですかね。

同時接続50-100ぐらいを想定しているもので...ちょっと心配なのでした。
0263名無しさん@お腹いっぱい。02/02/12 21:51ID:???
>>260
公式本とかいうやつか?
postgresql.jpのだろ。
0264名無しさん@お腹いっぱい。02/02/18 21:01ID:???
とりあえず、PEARのDBクラス使いませんか?>ALL

コネクション云々を考える負担が軽減されますよ。
0265名無しさん@お腹いっぱい。02/02/18 23:58ID:???
>264
pearてわからんちん・・・( ´Д⊂ヽ ウエーン
0266(=゚ω゚)ノ ◆SI2r4V0c 02/02/19 10:36ID:???
日本語マヌアルあるよ。
0267(=゚ω゚)ノ ◆SI2r4V0c 02/02/19 10:38ID:???
http://pear.php.net/manual/ja/index.php
0268名無しさん@お腹いっぱい。02/02/19 10:44ID:???
>>262
http://www.php.net/manual/ja/features.persistent-connections.php
らしいです。

あんまり神経質にならなくてもいいみたいです。
0269名無しさん@お腹いっぱい。02/02/19 16:40ID:???
Postgreからtimestamp型のフィールドを取り出すとき、
日付の末尾に+9という値(GMT?)が付くんですが、これを取り外すには
どのようにすればいいんでしょうか。
0270名無しさん@お腹いっぱい。02/02/19 16:59ID:???
>266
マヌエルて助っ人野球選手がいたよね昔。
(◕ฺ∀◕ฺ)
0271marois02/02/19 23:38ID:SCYCQAYn
>>268
情報ありがとうございます。
大変参考になりました。

話が変わるのですが、皆さんは文字コードに何をつかっておられますか?
結構文字化けに悩まされています。(PHP3i18でも)
私の場合、EUCでソースを書いて、EUCでDBに格納しているのですが、ブラウザが
Shift-JISと間違って判断してしまう場合があるようです。
<meta .htaccess と色々試してみたけど、駄目なときがある。
Shift-JISでソース、Shift-JISでDB格納していらっしゃる方はいらっしゃいま
すか? どんな組み合わせが文字化けしにくいんでしょうか?
0272名無しさん@お腹いっぱい。02/02/20 00:07ID:???
>270
情報ありがとうございます。
大変参考になりました。
0273名無しさん@お腹いっぱい。02/02/20 11:00ID:???
>>271
理屈上は、EUC-JPオンリーな運用をすれば化けないはず。

でもそれは現実的な話では無いからなぁ…
0274名無しさん@お腹いっぱい。02/02/24 05:50ID:IIwngioo
php+postgreでwebアプリ構築してるんですが、
ログイン画面でユーザが入力したID、パスワードを照会するとき、
IDでSELECT ID, PASSWD ... みたいに引っ張ってきて、
そのPASSWDとPOSTに入ったパスワードをmd5で照会する、
この方法って無意味ですか?(セキュリティ上の観点で)
027527402/02/24 05:52ID:???
>>274
事故レス。情報不足してました。
DBには裸の状態でパスが入ってます。
0276名無しさん@お腹いっぱい。02/02/24 06:50ID:gC0AF2pI
>>274
 無意味。

 DB内のパスワード見られたらクラックされる為。
 ハッシュ化(MD5、DES)したパスワードを格納する。

 質問の内容からして効率悪そうな開発をしているっぽいので、
crypt関数と、mod_auth_pgsql について調べることをおすすめ
する。
027727402/02/24 13:30ID:IIwngioo
>>276
早速調べて入れてみました。
で、今さらなんですが、パスワードはphp以外の箇所(言語)でも使うため
仕様変更が難しいようです。
まあごく限られたネットワーク内での使用を考えてるので(外には出さない)、
それほどセキュアなシステムで無くても良いんですが、DBを暗号化せず
セキュリティを高める方法ってないでしょうか(SSL以外)。
0278名無しさん@お腹いっぱい。02/02/24 18:08ID:L35l4mFf
>>277

 DBを暗号化というか、DB格納パスワードをハッシュ化。

> セキュリティを高める方法ってないでしょうか(SSL以外)。

 無い。
0279名無しさん@お腹いっぱい。02/02/24 19:44ID:1vBdeyQk
でも crypt かけちゃったら、ユーザーがパスワード忘れた
ときとか、どうやって元のパスワードを教えて上げるの?

パスワード設定し直すっていう方法が現実的かも知れないけど。
0280名無しさん@お腹いっぱい。02/02/24 20:43ID:L35l4mFf
> どうやって元のパスワードを教えて上げるの?

 当然、教えてあげない。

> パスワード設定し直すっていう方法が現実的かも知れないけど。

 そうする。基本だよね?
0281名無しさん@お腹いっぱい。02/02/26 00:31ID:EFcQI2qb
>>273
PHP3-i18nでもPHP4.0.6以降でも、出力だけSJISってのができるから、それが一番
問題起きないんじゃない? 出力がEUC-JPだと文字化けするブラウザは結構あるし。
PHP,DB内部はEUC-JPで、HTTP入出力はSJISでずっとやってますが、大きな問題は
おきてないな。
0282名無しさん@お腹いっぱい。02/02/26 01:58ID:myAGwwd4
しつもーーん
http://www.jlb.dyn.to/hsinstall/salsemng/
こんな感じで、みんなも、定期的に、バキュームしてる?
自分は、したことないぞーばきゅーむなんて。
0283名無しさん@お腹いっぱい。02/02/26 02:19ID:R0qwrTOR
野球ヲタワラタ

http://ime.nu/www.baseball-lover.com
0284名無しさん@お腹いっぱい。02/02/26 02:24ID:c48zylad
質問です。
interval型を使って年-日-時でデータを管理しているのですが、
365日で1年への繰り上がりを期待したら、
どうやら360日で繰り上がってます。

繰り上がり日数の指定ってできないのでしょうか?
0285名無しさん@お腹いっぱい。02/02/26 15:19ID:ws1pgQhy
>>281

 MIMEヘッダーに文字コードをつければ化けない。
 HTMLファイルにも、httpd.conf や .htaccess に AddType を
加える事で可能。
0286  02/03/24 17:12ID:S817rdf9
現在、PHP+PostgreSQLで小規模なDBシステムを開発していますが、
教えていただきたいことがあります。

それは、このシステムで出力されるデータをPDFファイルにしたいのですが、
これを実現するためには、PHPをインストールする際にpdflibを使用する旨の
オプションを指定する必要があることは知っています。

ただ、現在はインストールした後ですので、後でpdflibを追加することは
可能ですか?厨房なので、詳しい方法を教えてくれませんか?よろしくお願いします。
0287nobodyさん02/03/25 01:50ID:hKhhq3k3
>>286
 コンパイル時に組み込むものだから、後からは無理だと思われ。
 リコンパイルする手間はそんなに無いと思うので、やり直しをおすすめ。

> 厨房なので

 DBシステム開発自体を辞めておけ。
0288nobodyさん02/07/31 14:56ID:???
PHP4.2.2セキュリティー対応上げ

皆さん入れ替えましたか?
0289nobodyさん02/07/31 16:33ID:???
( ´,_ゝ`)プッ
http://freehome.kakiko.com/tuk/iiyo.html
0290nobodyさん02/09/01 20:10ID:h2ERcGeK
何でこのスレッド書き込みが無いの?
とりあえずあげ。
0291b02/09/01 20:21ID:hC+cV5mq
http://www.jsweb.sexheroes.com/index.html
0292お役立ちサイトです。02/09/01 23:25ID:eeJda9o6
究極の総合リンク集

http://home9.highway.ne.jp/cym10262/
0293ノンノン02/09/28 21:30ID:Mv9w8xYv
TIMESTAMP型の日時をPHPで表示する方法が良く分かりましぇんです。

$sql = "select to_char(nichiji, 'YYYY/MM/DD') from テーブル名";
$result = pg_exec($sql);

で、良いと思うのですが、

Warning: PostgreSQL query failed: ERROR: No such function
'to_char' with the specified attributes

っていうエラーが出ます。
これって、to_charが使えないってことですか?
仮に to_char が使えない場合、どうやればいいのでしょうか?
どなたかご教授願います。
0294nobodyさん02/09/28 21:38ID:B9guHGNW
整形してから引っぱり出すんじゃなくて
引っぱり出してから整形してください
0295hmk02/09/28 21:39ID:???
よーわからんが、nichijiは本当にtimestamp型になっているのかぇ?
0296ノンノン02/09/28 21:59ID:Mv9w8xYv
> よーわからんが、nichijiは本当にtimestamp型になっているのかぇ?

それは間違いないです。ハイ。

> 整形してから引っぱり出すんじゃなくて
> 引っぱり出してから整形してください

あいたたぁ。そういうやり方がありましたね。(なんて私は頭がカタイのか)
とすると、取り出したものが $nichiji に入ってるとすると

local($nichiji);

なんてものを使えば良いのでしょうか?
0297294 じゃないよ02/09/28 22:17ID:???
「引っぱり出してから整形して」というのはたとえば、
EXTRACT(YEAR FROM nichiji) AS nchj_y,
...
みたいに SQL を書くという意味ではないかな。ちょっ
と手間は増えるけど、漏れはいつもこうしてる。
0298ノンノン02/09/29 13:23ID:lz5l3CdA
なるほど、YEAR,MONTH,DAY というように取り出したいデータごとに
実行するということですね。
で、試してみました。
・・・結果はだめでした。
なので、簡単に

 select extract(YEAR from TIMESTAMP '2002-09-29')

としてやってみました。
・・・、これもダメでした。PHP を使ってもコマンドラインからも
結果は同じです。どちらも、こういうエラーが出ます。

ERROR: Function 'date_part(text, timestamp)' does not exist
Unable to identify a function which satisfies the given argument
types You will have to retype your query using explicit typecasts

何が原因なんでしょうか? PostgreSQLのバージョン?
ちなみにそのバージョンは、6.5.3 です。
029929702/09/29 13:49ID:???
>>298
7.0.2 なら select extract(YEAR from TIMESTAMP '2002-09-29')
は OK だね。6.5.3 だとダメ。

6.5.3 なら、
select extract(YEAR from DATETIME '2002-09-29')
で OK だけど、DATETIME は標準じゃないし、最近は
Postgres でも推奨されていないと思う。
0300ノンノン02/09/29 14:05ID:lz5l3CdA
やっぱりそうですか。
ということは、to_char でエラーが出るのもパージョンのせいですね。
レンタルサーバなのでどうにもできません。
フィールドのタイプを変えるしかないないですね。
原因が分かっただけでも良かったです。

みなさん、ありがとうございました。
また、何かあれば願いしますね。
030129702/09/29 14:17ID:???
>>300
date_part 関数使えば、フィールドの型は変えなくて済むと
思われ。でも標準(略
■ このスレッドは過去ログ倉庫に格納されています