- ベストアンサー
SQL*PLUSでの分秒までの表示の仕方
お世話になっております。 Oracle SQL*PLUSでデータを打ち込んでいるところなのですが、 表示の仕方で分からないところがあるので、 どなたか教えていただけないでしょうか? date型で指定して日付カラムを作ったところに TO_DATE('2009-01-02 10:00:10','YYYY-MM-DD HH24:MI:SS'), と入力したのですが、select文でデータを検索したところ DATE -------- 09-01-02 と返ってきました。これを分、秒まで表示させるには どうしたらよいでしょうか?? よろしくお願いいたします。
- みんなの回答 (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>
その他の回答 (2)
- 3rd_001
- ベストアンサー率66% (115/174)
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
お礼
分かりやすい説明ありがとうございます! to_dateとto_charがごっちゃになっていたので お陰でスッキリして、結果を得ることができました。 ありがとうございます。
- 3rd_001
- ベストアンサー率66% (115/174)
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ではない場合はどうしたよいでしょうか?
お礼
セッションの変更をすれば、to_charやto_dateを 使わずとも結果を得られるのですね!! ありがとうございます。助かりました。