我正在从 db2 迁移到 Oracle 数据库。有人可以解释一下为什么小数点和时间在 db2 中显示,但在 Oracle 中不显示。有什么具体原因吗?
例如:
检查了 db2visualizer 和 Oracle SQL Developer。
Oracle 数据库 存储
NUMBER
和 DATE
作为非人类可读格式的二进制值,并且您不能更改它们的存储方式。
如果您想以某种方式显示值,请使用
TO_CHAR
并指定您希望它们显示的格式。
在甲骨文中:
NUMBER
以每 2 位 1 个字节的二进制格式存储,Oracle 存储数字的值,并且从不以任何特定的人类可读格式存储。值 1000
和 1000.000
相同,因此数据库将仅存储 1000
。DATE
以二进制格式存储,由代表世纪、世纪年份、月、日、小时、分钟和秒的 7 个字节组成。它始终具有所有这些日期和时间组件,并且从不以任何特定的人类可读格式存储。当您查询数据库时,它会将二进制值返回给客户端应用程序,然后客户端应用程序选择如何以有意义的方式显示该二进制数据。
如果您作为用户想要更改客户端显示数据的方式,那么您可以:
修改客户端应用程序上的设置。对于 SQL Developer,您可以更改
NLS_DATE_FORMAT
会话参数或更改首选项菜单中的设置;或
使用
TO_CHAR
将二进制值格式化为所需格式的字符串。
SELECT TO_CHAR(your_number_column, '9999D000') AS your_formatted_number,
TO_CHAR(your_date_column, 'YYYY-MM-DD HH24:MI:SS') AS your_formatted_date
FROM your_table;