小数点和时间显示在 db2 中,而不是 Oracle 中

问题描述 投票:0回答:1

我正在从 db2 迁移到 Oracle 数据库。有人可以解释一下为什么小数点和时间在 db2 中显示,但在 Oracle 中不显示。有什么具体原因吗?

例如:

  1. db2 中为 1000.000,Oracle SQL Developer 中为 1000。
  2. db2 中为 2022-07-22 08:23:06,Oracle 中为 202-07-22。

检查了 db2visualizer 和 Oracle SQL Developer。

oracle db2 migration
1个回答
1
投票

Oracle 数据库 存储

NUMBER
DATE
作为非人类可读格式的二进制值,并且您不能更改它们的存储方式。

如果您想以某种方式显示值,请使用

TO_CHAR
并指定您希望它们显示的格式。


在甲骨文中:

  • NUMBER
    以每 2 位 1 个字节的二进制格式存储,Oracle 存储数字的,并且从不以任何特定的人类可读格式存储。值
    1000
    1000.000
    相同,因此数据库将仅存储
    1000
  • DATE
    以二进制格式存储,由代表世纪、世纪年份、月、日、小时、分钟和秒的 7 个字节组成。它始终具有所有这些日期和时间组件,并且从不以任何特定的人类可读格式存储。

当您查询数据库时,它会将二进制值返回给客户端应用程序,然后客户端应用程序选择如何以有意义的方式显示该二进制数据。

如果您作为用户想要更改客户端显示数据的方式,那么您可以:

  1. 修改客户端应用程序上的设置。对于 SQL Developer,您可以更改

    NLS_DATE_FORMAT
    会话参数或更改首选项菜单中的设置;或

  2. 使用

    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;
    
© www.soinside.com 2019 - 2024. All rights reserved.