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

yqlxgs2m  于 2023-11-17  发布在  Oracle
关注(0)|答案(1)|浏览(129)

我正在从db2迁移到Oracle数据库。有人能解释一下为什么小数点和时间在db2中显示而在Oracle中不显示。有什么具体的原因吗?
例如:

  1. db2中为1000.000,Oracle SQL Developer中为1000。
  2. 2022-07-22 08:23:06在db2和202-07-22在Oracle中。
    在db2 visualizer和Oracle SQL developer中运行。
omhiaaxx

omhiaaxx1#

Oracle数据库以非人类可读格式将NUMBER s和DATE s存储为二进制值,并且您不能更改它们的存储方式。
如果你想以某种方式显示值,那么使用TO_CHAR并指定你想要它们显示的格式。
在Oracle中:

  • NUMBER以二进制格式按value存储,每2位1字节,并且Never以任何特定的人类可读格式存储。10001000.000的值相同,因此数据库将只存储1000,并且永远不会存储任何尾随的零值十进制数字。
  • DATE s以二进制格式存储,由7个字节组成,代表世纪,世纪年,月,日,小时,分钟和秒。它始终具有所有这些日期和时间组件,并且从不以任何特定的人类可读格式存储。

当您查询数据库时,它将向客户端应用程序返回二进制值,然后客户端应用程序选择如何以有意义的方式向用户显示二进制数据。
如果您作为用户想要更改客户端显示数据的方式,则可以:
1.修改客户端应用程序上的设置。对于SQL Developer,您可以更改NLS_DATE_FORMAT会话参数或更改首选项菜单中的设置(客户端上没有将数字显示为特定小数位数的设置);或者
1.使用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;

字符串

相关问题