0

我想更改 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 的插入日期

提前致谢

4

4 回答 4

1

如果您使用的是 SQL*Plus,您可以在 glogin.sql 或 login.sql 文件中添加设置 nls_date_format 的命令 - 请参阅这个有用的指南

但是,如果您的要求是“让 Oracle 接受格式为 MM/DD/YYYY 的插入日期”,为什么不在插入时简单地将字符串转换为日期,例如:

insert into some_table (id, date_col)
values (1, to_date('10/25/2016', 'mm/dd/yyyy'));

这样,您就不必担心格式问题;它会自动采用正确的格式。

于 2016-10-25T10:18:40.967 回答
1

正如您在命令中看到的那样,您正在更改会话。因此,重新连接后,您将拥有获取服务器设置的新会话。为了更好地理解,请阅读: https ://docs.oracle.com/cd/A87860_01/doc/server.817/a76966/ch2.htm

我建议始终插入日期,to_date(data_string,'MM/DD/YYYY HH24:MI')而不是相信 NLS 不会更改。

于 2016-10-25T09:58:34.827 回答
0

您也可以在注册表中设置此格式

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_{Oracle Home Name}\NLS_DATE_FORMAT,

分别

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 = ...命令更改。

于 2016-10-25T10:00:20.570 回答
0

执行 ALTER SYSTEM 而不是 SESSION:

ALTER SYSTEM SET NLS_DATE_FORMAT='MM/DD/YYYY' scope=both;

或者:

ALTER SYSTEM SET NLS_DATE_FORMAT='MM/DD/YYYY';

更多信息在这里

于 2020-06-15T04:44:16.230 回答