我想更改Oracle的日期格式 现在它是DD / MM / YYYY,我想把它改成MM / DD / YYYY
我使用了一个简单的代码(谢谢谷歌)
ALTER SESSION SET NLS_DATE_FORMAT = 'MM/DD/YYYY HH24:MI';
select sysdate from dual;
问题是当我断开连接并重新连接时,更改将被取消,
任何帮助?
更改的主要内容是让Oracle接受格式为MM / DD / YYYY的插入日期
提前致谢
答案 0 :(得分:1)
正如您在命令中看到的那样,您正在改变会话。因此,重新连接后,您将获得获取服务器设置的新会话。为了更好地理解,请阅读: https://docs.oracle.com/cd/A87860_01/doc/server.817/a76966/ch2.htm
我建议始终使用to_date(data_string,'MM/DD/YYYY HH24:MI')
插入日期,而不要相信NLS不会被更改。
答案 1 :(得分:1)
如果您正在使用SQL * Plus,则可以添加命令以在glogin.sql或login.sql文件中设置nls_date_format - 请参阅this helpful guide。
但是,如果您的要求是让Oracle接受格式为MM / DD / YYYY"的插入日期,为什么不简单地将字符串转换为插入日期时的日期,例如:
insert into some_table (id, date_col)
values (1, to_date('10/25/2016', 'mm/dd/yyyy'));
这样,您就不必担心格式化问题;它将自动采用正确的格式。
答案 2 :(得分:0)
您也可以在注册表中设置此格式
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_{Oracle Home Name}\NLS_DATE_FORMAT
,
RESP。
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE\KEY_{Oracle Home Name}\NLS_DATE_FORMAT
从命令行执行此操作的示例:
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraClient11g_home1" /v NLS_DATE_FORMAT /t REG_SZ /d "MM/DD/YYYY HH24:MI" /f
另一种可能性是将值设置为环境变量,例如:
set NLS_DATE_FORMAT="MM/DD/YYYY HH24:MI"
注意,环境变量优先于注册表设置。
但请注意,这些只是定义NLS_DATE_FORMAT
的默认值。它可以随时通过ALTER SESSION SET NLS_DATE_FORMAT = ...
命令进行更改。
答案 3 :(得分:0)
执行ALTER SYSTEM代替SESSION:
ALTER SYSTEM SET NLS_DATE_FORMAT='MM/DD/YYYY' scope=both;
或:
ALTER SYSTEM SET NLS_DATE_FORMAT='MM/DD/YYYY';
更多信息here。