更改 oracle sql 的日期结构
changing date structure for oracle sql
我试图在 oracle SQL 中将一个已经存在的日期从 ('DD,MON,YY') 修改为 ('DD,MONTH,YYYY'),但它对我不起作用
ALTER TABLE EMP MODIFY (hiredate to_date ('DD,MON,YYYY'))
Oracle中的一个DATE
值没有任何格式!
我假设(并希望)您只是想更改默认的 显示 格式。使用
ALTER SESSION SET NLS_DATE_FORMAT = 'DD,MONTH,YYYY';
如果 hiredate
的数据类型是 VARCHAR2
而不是 DATE
,请将数据类型迁移到正确的 DATE
并从我的答案顶部重新开始。
这是一种常见的误解,认为数据库中的日期具有格式。
您无法修改 DATE
数据类型值的格式,因为它没有格式;它以 7 bytes 的形式存储在数据库中:2 代表年,1 代表月、日、小时、分钟和秒,并且始终具有这些组件,它们只是数字。数据库不关心格式;它只关心值。
您用来访问数据库的客户端软件关心格式,因为它必须与您(用户)交谈,您通常不喜欢被提供大量数字,客户端软件会尝试格式化为你约会。
如果你想问:
How do we get <insert name of SQL client software here> to change the default format it uses to display a DATE
data type?
对于SQL/Plus和SQL开发人员,您可以使用NLS_DATE_FORMAT
会话参数:
ALTER SESSION SET NLS_DATE_FORMAT = 'DD,MONTH,YYYY';
如果您使用不同的软件与数据库对话,那么您需要阅读该软件的 manual/documentation。
或者,如果您想问:
How do we display DATE
values from a table with a specific format?
将SELECT
与TO_CHAR
函数结合使用:
SELECT TO_CHAR( date_column, 'DD,MONTH,YYYY' ) AS formatted_date_column
FROM table_name;
我试图在 oracle SQL 中将一个已经存在的日期从 ('DD,MON,YY') 修改为 ('DD,MONTH,YYYY'),但它对我不起作用
ALTER TABLE EMP MODIFY (hiredate to_date ('DD,MON,YYYY'))
Oracle中的一个DATE
值没有任何格式!
我假设(并希望)您只是想更改默认的 显示 格式。使用
ALTER SESSION SET NLS_DATE_FORMAT = 'DD,MONTH,YYYY';
如果 hiredate
的数据类型是 VARCHAR2
而不是 DATE
,请将数据类型迁移到正确的 DATE
并从我的答案顶部重新开始。
这是一种常见的误解,认为数据库中的日期具有格式。
您无法修改 DATE
数据类型值的格式,因为它没有格式;它以 7 bytes 的形式存储在数据库中:2 代表年,1 代表月、日、小时、分钟和秒,并且始终具有这些组件,它们只是数字。数据库不关心格式;它只关心值。
您用来访问数据库的客户端软件关心格式,因为它必须与您(用户)交谈,您通常不喜欢被提供大量数字,客户端软件会尝试格式化为你约会。
如果你想问:
How do we get <insert name of SQL client software here> to change the default format it uses to display a
DATE
data type?
对于SQL/Plus和SQL开发人员,您可以使用NLS_DATE_FORMAT
会话参数:
ALTER SESSION SET NLS_DATE_FORMAT = 'DD,MONTH,YYYY';
如果您使用不同的软件与数据库对话,那么您需要阅读该软件的 manual/documentation。
或者,如果您想问:
How do we display
DATE
values from a table with a specific format?
将SELECT
与TO_CHAR
函数结合使用:
SELECT TO_CHAR( date_column, 'DD,MONTH,YYYY' ) AS formatted_date_column
FROM table_name;