- PR -

Timestampのテーブルにyyyy/mm/dd hh:mm:ssで入れたい

1
投稿者投稿内容
未記入
ベテラン
会議室デビュー日: 2007/09/29
投稿数: 78
投稿日時: 2007-10-29 22:31
こんにちは。

Oracle10gのテーブルのTimestamp型にyyyy/mm/dd hh:mm:ssのフォーマットで入れたいのですが、どのようにセットすればよろしいのでしょうか?(或いはミリ秒を表示させないようにするには・・)
テーブルの型がDateであればいい話なのですが・・。

PreparedStatement ps = conection.prepareStatement(SQL);
ps.setTimestamp(1, new Timestamp(System.currentTimeMillis()));

よろしくお願いします。
朝日奈 ありす
ベテラン
会議室デビュー日: 2007/10/28
投稿数: 57
お住まい・勤務地: 北の都
投稿日時: 2007-10-29 22:50
SQLで取得時またはJAVAで表示時に整形すればいいかと
flatline
大ベテラン
会議室デビュー日: 2005/09/22
投稿数: 102
投稿日時: 2007-10-29 23:41
「フォーマットで入れたい」「ミリ秒を表示させないようにする」という文言から察するに、日付型の意味がよくわかっていないのだと思います。
簡単に言うと、日付型に格納されているのはある時点からのシリアル値(つまり数値)です。
なので「特定のフォーマットで格納」ということは意味をなしません。
格納される精度は、Oracle ならDate型かTimestamp型かで決まります。


AOFG
会議室デビュー日: 2007/09/07
投稿数: 11
投稿日時: 2007-10-30 00:20
Javaとは関係ないですが、
Date型だと
ALTER SESSION SET NLS_DATE_FORMAT='yyyy/mm/dd hh24:mi:ss';
というようにするとフォーマットが変わりますよね。
TIMESTAMP型でも
ALTER SESSION SET NLS_TIMESTAMP_FORMAT='yyyy/mm/dd hh24:mi:ss';
をしたら良いんじゃないでしょうか。

やはりJavaから接続する場合はあまり良く知りませんが、
Webサーバーだか、アプリケーションサーバだかの起動時の環境変数として
NLS_TIMESTAMP_FORMAT を設定しておくというのではどうでしょうか。

PHPでやったときは、デフォルトのフォーマットを変える際は
Apache の起動時の環境変数を設定したような気がします。
また、Javaアプリケーションの場合も環境変数を指定したら
デフォルトのフォーマットが変わりました。

http://biz.rivus.jp/nlsparameter.html とかを参考にしました
trickster
会議室デビュー日: 2004/08/05
投稿数: 8
お住まい・勤務地: 東京の外れで気持ちは千葉っ子
投稿日時: 2007-11-06 15:59
flatlineさんが仰ってる様にあくまでそれが
Date型かTimestamp型かというだけなのかと思ったりなのですが…。

データとして利用する際に、形式変更が必要であれば
汀さんの仰る様に整形すればよいだけじゃないですかね?
※to_charで変換とかは、ユーザ要件によってよくやりますしね。

もし要件が「Oracle10gのテーブルのTimestamp型に
yyyy/mm/dd hh:mm:ssのフォーマットで入れたいのです」
であれば、それは無理な話だと思います
カーニー
ぬし
会議室デビュー日: 2003/09/04
投稿数: 358
お住まい・勤務地: 東京
投稿日時: 2007-11-06 17:40
引用:

flatlineさんの書き込み (2007-10-29 23:41) より:
簡単に言うと、日付型に格納されているのはある時点からのシリアル値(つまり数値)です。


Oracleの日付型はシリアル値ではなく、年や月などの各パート毎に値を保持しています。
それでもやはり、表示形式とは無関係ですけどね。

Javaのjava.sql.Timestampやjava.util.Dateは内部的にはシリアル値なんですが。
カーニー
ぬし
会議室デビュー日: 2003/09/04
投稿数: 358
お住まい・勤務地: 東京
投稿日時: 2007-11-06 17:44
引用:

未記入さんの書き込み (2007-10-29 22:31) より:
Oracle10gのテーブルのTimestamp型にyyyy/mm/dd hh:mm:ssのフォーマットで入れたいのですが、どのようにセットすればよろしいのでしょうか?(或いはミリ秒を表示させないようにするには・・)


セットしたTimestamp値が「yyyy/mm/dd hh:mm:ss形式ではない」ことを、どのようにして確認しましたか?

もしSQL*PlusなどのツールでSELECT文を実行したのであれば、tricksterさんご指摘のように、to_char関数で整形して下さい。
SELECT ..., to_char(timestamp_column_name, 'YYYY/MM/DD HH24:MM:SS'), ...
flatline
大ベテラン
会議室デビュー日: 2005/09/22
投稿数: 102
投稿日時: 2007-11-07 00:06
引用:

Oracleの日付型はシリアル値ではなく、年や月などの各パート毎に値を保持しています。
それでもやはり、表示形式とは無関係ですけどね。



そ、そうでした。
つい最近、Excel の日付を調べたので、ごっちゃになってしまいました。
1

スキルアップ/キャリアアップ(JOB@IT)