2016-02-18 3 views
0

У меня проблема с NLS_DATE_FORMAT.Oracle NLS_DATE_FORMAT с использованием Eclipse

я запускаю это:

ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24: MI: SS'; 
ALTER SESSION SET NLS_TIME_FORMAT = 'HH24: MI: SSXFF'; 
ALTER SESSION SET NLS_TIMESTAMP_FORMAT = 'YYYY-MM-DD HH24: MI: SSXFF'; 

На сервере шоу SYSDATE => 2016-01-18 => OK

Но когда я бегу SQL скрипт из Явы, он всегда показывает 18-FEB- 16. Как изменить на 2016-01-18 без редактирования моего исходного кода.?

+1

Пожалуйста, покажите свой код Java, так как это представление «18-FEB-16» может быть из-за формата, в котором вы печатаете возвращаемые 'java.sql.Date' или' java.util.Date' или .. объекты не являются форматом базы данных. – STaefi

+0

Мой код вызывает процедуру Oracle, и он показывает «18-FEB-16» в «Процедуре –

+1

». Проверьте это http://stackoverflow.com/questions/447608/how-to-change-default-nls-date-format-for -oracle-клиент-JDBC –

ответ

1

Я не знаю, о конкретной конфигурации JAVA, но вы можете создать после входа триггер в БД, чтобы изменить конфигурацию NLS:

How to change default nls_date_format for oracle jdbc client

CREATE OR REPLACE TRIGGER LOGINTRG 
AFTER LOGON ON DATABASE 
BEGIN 
    if user = 'MYUSER' then -- if you can do that better 
    EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_DATE_FORMAT=''YYYY-MM-DD HH24:MI:SS'''; 
    end if; 
END LOGINTRG; 

Я хотел бы предложить добавить if, чтобы сделать это только тогда, когда подключенный пользователь является тем, который использует ваше приложение.