決してSQL*Plusだけではないのだけれど、各種クライアントから日付出力の書式を変更したい場合がありますよね。そんな時はalter session で変更します。恒久的に変更したいならクライアント環境変数を変更すればよいのですが、既に運用が開始されているシステムにおいては安易に変更してしまうと他に影響が出る可能性があるので注意してください。その点alter sessionによる変更は現セッション内だけでの変更なので安心です。
ALTER SESSIONによる書式変更
alter session set nls_date_format='YYYY/MM/DD HH24:MI:SS' ;
確認方法
V$NLS_PARAMETERSは「現在(現セッション)の設定値」を確認できます。
select PARAMETER,VALUE from v$nls_parameters where PARAMETER='NLS_DATE_FORMAT' ;
SQL> select sysdate from dual;
SYSDATE
--------
24-02-25
--
-- 現状の値を確認する
--
SQL> select PARAMETER,VALUE from v$nls_parameters where PARAMETER='NLS_DATE_FORMAT';
PARAMETER VALUE
------------------------ ------------------------------------
NLS_DATE_FORMAT RR-MM-DD
--
-- 設定値を変更する。
--
SQL> alter session set nls_date_format='YYYY/MM/DD HH24:MI:SS'
2 ;
セッションが変更されました。
--
-- 変更された事を確認
--
SQL> select PARAMETER,VALUE from v$nls_parameters where PARAMETER='NLS_DATE_FORMAT'
2 ;
PARAMETER VALUE
------------------------ ------------------------------------
NLS_DATE_FORMAT YYYY/MM/DD HH24:MI:SS
--
-- 期待通りの表記になりました
--
SQL> select sysdate from dual;
SYSDATE
-------------------
2024/02/25 10:39:00
SQL>
SQL*Plus用
SET LIN 300 SET PAGES 25 COLUMN PARAMETER FORMAT A24 COLUMN VALUE FORMAT A36