WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:Perlの正規表現について教えて下さい

0:[投稿] ぴぴ [2004/03/08 21:22 ][環境:Windows2000、IE6.0 Linux、CGI、PostgreSQL7.2.1]

こんばんは、ぴぴと申します。
perl(というかプログラミング)を始めて間もない者です。
perlの正規表現に関して質問させて下さい。

perlを用いてPostgreSQLからdatetime型のカラム(例えばdate_startという名前)をselect文で取得し、
それをブラウザ上に表示させたいと思っております。
datetime型だとミリセコンド秒まで取ってきてしまうので、
そのままブラウザに表させると「2004-03-01 00:00:00+09」と
いった内容が出てしまいます。これを「2004-03-01 00:00」と
分までの表示にしたく思っております。
select文で取得した後に、この部分だけを正規表現を使って
「2004-03-01 00:00:00+09」から「2004-03-01 00:00」へ表示を
変えたいのですが、最後の「:00+09」を切り落として、最終的に
「2004-03-01 00:00」といった表示にしたい場合、どのようにしたらいいのでしょうか?もう少し自分で調べてみようと思ったのですが、結構な時間が経ってしまったため、皆様のご教授を頂けたらと思い投稿させていただきました。
(あるいは、この掲示板の意図と違ってしまって大変申し訳ないのですが、PostgreSQLで上手く取ってくる方法をご存知の方がいらっしゃいましたら、ご教授願えればと思います)
よろしくお願い致します。


1:[回答] ふじ [2004/03/08 22:06 ]

Perlの正規表現で
$date_start =~ s/^(\d{4}-\d{2}-\d{2} \d{2}:\d{2}).*$/$1/;
とか
$date_start =~ s/:\d{2}\+\d{2}$//;

文字数が固定でいい (西暦は4桁が前提) なら
$date_start = substr($date_start, 0, 16)

PostgreSQLで文字列として切り捨てちゃうなら
SELECT substr(date_start, 1, 16) FROM table_name;
とかですかね。
# substr の起点が Perl と PostgreSQL で違うのに注意。


2:[回答] B-Cus [2004/03/09 01:43 ]

to_char(date_start, 'YYYY-MM-SS HI24:MI') の方が一般的かなぁ
と思うんですが、どうでしょうね。
# http://www.postgresql.jp/document/pg74doc/html/functions-formatting.html


3:[回答] ふじ [URL] [2004/03/09 03:01 ]

>>2
> to_char(date_start, 'YYYY-MM-SS HI24:MI') の方が一般的かなぁ
to_char(date_start, 'YYYY-MM-SS HH24:MI')
ですよね。(HI → HH)

確かに、to_char のほうが(意味的にも)適切だと思います。
私が PostgreSQL を使いはじめた頃 (version 6.5 以前) は to_char が使えなかったので、
無意識に避ける癖がついていたのかも。
# ずいぶん昔のことですが


4:[回答] ふじ [URL] [2004/03/09 03:11 ]

>>3
to_char(date_start, 'YYYY-MM-DD HH24:MI')
でした。


5:[関連] ぴぴ [2004/03/09 09:28 ]

ふじ様、B-Cus様

ぴぴです。早速のご教授ありがとうございます。
substrやto_charなんて思いもつかなかったです…(汗)
date_part関数で出来るかどうかは考えたのですが、
それだと一度にまとめて抜き取りたい箇所を、
持ってこられないと感じて煮詰まっておりました。
(まとめて'year','month''day'…と指定できない)
早速参考にさせていただきたいと思います。
ご教授ありがとうございました!!

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World