プロが教える店舗&オフィスのセキュリティ対策術

お世話になっております。
Oracle SQL*PLUSでデータを打ち込んでいるところなのですが、
表示の仕方で分からないところがあるので、
どなたか教えていただけないでしょうか?

date型で指定して日付カラムを作ったところに
TO_DATE('2009-01-02 10:00:10','YYYY-MM-DD HH24:MI:SS'),
と入力したのですが、select文でデータを検索したところ
DATE
--------
09-01-02
と返ってきました。これを分、秒まで表示させるには
どうしたらよいでしょうか??
よろしくお願いいたします。

A 回答 (3件)

SQL> ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';


セッションが変更されました。
SQL> select sysdate from dual;
SYSDATE
-------------------
2009-05-27 14:52:50
SQL>
    • good
    • 2
この回答へのお礼

セッションの変更をすれば、to_charやto_dateを
使わずとも結果を得られるのですね!!
ありがとうございます。助かりました。

お礼日時:2009/05/28 14:20

sysdateとdualを使っているのは一々、テーブルを作成するのが面倒だからです。


それに、date型のカラムにto_charするのとsysdateをto_charするのは書式上同一です。

to_date : char型をdate型に変換する。
to_char : date型をchar型に変換する。

sysdateでもなんでも、date型に対してto_charで書式していすれば
その書式どおりに表示できます。

(1) date型に文字列'2009-01-02 10:00:10'をto_dateで型変換して入れる。
(2) date型をto_charで書式指定してselectする。

あくまで表示上の問題です。

SQL> create table a (a date);
表が作成されました。

insert into a values(to_date('2009/01/01/ 10:00:00','YYYY/MM/DD HH24:MI:SS'));

1行が作成されました。
SQL> select to_char(a,'YYYY/MM/DD HH24:MI:SS') from a;

TO_CHAR(A,'YYYY/MM/
-------------------
2009/01/01 10:00:00
    • good
    • 0
この回答へのお礼

分かりやすい説明ありがとうございます!
to_dateとto_charがごっちゃになっていたので
お陰でスッキリして、結果を得ることができました。
ありがとうございます。

お礼日時:2009/05/27 14:07

date型のフォーマット指定はTO_DATEではなくTO_CHARですよ。


※TO_DATEはchar型をdate型にします。

select to_date(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual
TO_DATE(
--------
09-05-26

select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual
TO_CHAR(SYSDATE,'YY
-------------------
2009-05-26 19:29:52

この回答への補足

ご回答ありがとうございます。
今、テストデータを作成したくてデータ入力をしているので、
現在の時間を取得したいのではなく、ある任意の時間を入力
したいのですが、
TO_CHAR(20090102100010,'YYYY-MM-DD HH24:MI:SS')
と入力したらエラーになってしまいました。
SYSDATEではない場合はどうしたよいでしょうか?

補足日時:2009/05/27 08:55
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています

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