NLS_DATE_FORMAT 是 Oracle 数据库中的一个会话级别参数,它用于定义日期类型数据的默认显示格式。通过设置这个参数,你可以指定日期格式在查询结果中如何显示。
-
会话级别设置
你可以在当前会话中修改 NLS_DATE_FORMAT,这样该会话中所有查询的日期输出格式都会遵循这个设置,直到会话结束。
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';
这个例子设置日期格式为 YYYY-MM-DD HH24:MI:SS,即年-月-日 小时:分钟:秒。 -
系统级别设置
如果你希望在数据库层面设置一个全局的 NLS_DATE_FORMAT,以便所有新建的会话都遵循这个格式,可以修改数据库初始化参数文件(init.ora 或 spfile.ora)中的 NLS_DATE_FORMAT。
在 init.ora 文件中添加或修改以下内容:
NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS'
修改后,需要重启数据库使设置生效。 -
查询当前的 NLS_DATE_FORMAT 设置
你可以查询当前会话的 NLS_DATE_FORMAT 设置,使用如下 SQL 语句:
SELECT value FROM v$nls_parameters WHERE parameter = 'NLS_DATE_FORMAT';
或者:
SHOW PARAMETER NLS_DATE_FORMAT; -
常见的日期格式
'YYYY-MM-DD':年-月-日。
'DD-MON-YYYY':日-月-年(如 23-JAN-2025)。
'MM/DD/YYYY':月/日/年(如 01/23/2025)。
'YYYY/MM/DD HH24:MI:SS':年/月/日 小时:分钟:秒(如 2025/01/23 14:35:20)。
注意事项
NLS_DATE_FORMAT 只影响日期的显示格式,并不改变日期在数据库中存储的格式。Oracle 内部存储日期是以标准的二进制格式存储的,格式设置只是影响输出。
修改 NLS_DATE_FORMAT 对 SQL 查询结果的显示有影响,但对日期数据类型的输入没有影响。例如,插入日期时,Oracle 会自动解析你输入的日期字符串,无论 NLS_DATE_FORMAT 如何设置,只要格式符合默认的或指定的日期格式。