Oracle PL/SQL 中的日期格式

use*_*101 0 sql oracle plsql date

如何检查oracle表中特定列的日期格式?oracle DATE 数据类型是否能够存储两种格式(美国和欧洲)?如果是的话,有没有办法区分哪个是月份,哪个是日期?

MT0*_*MT0 6

在Oracle中,aDATE是一种二进制数据类型,由7个字节组成,分别代表

  1. 世纪;
  2. 世纪年份;
  3. 月;
  4. 天;
  5. 小时;
  6. 分钟; 和
  7. 第二

始终具有这些组件,并且从不任何特定格式存储。


如何检查oracle表中特定列的日期格式?

它没有任何格式,所以你不能。

如果你想查看 a 的二进制值,DATE可以使用以下DUMP函数:

SELECT DUMP(date_column) FROM table_name;
Run Code Online (Sandbox Code Playgroud)

oracleDATE数据类型是否能够存储两种格式(美国和欧洲)?

不,它从不存储任何格式。

如果你想存储格式化数据,那么使用字符串数据类型;但是,这通常被认为对于日期来说是不好的做法,因为如果同时使用DD/MM/YYYY和 ,它会在日和月之间引入歧义MM/DD/YYYY。最佳实践是将日期存储为 a DATE,然后在显示日期时选择适当的格式。


如果您想显示日期类型DATE,则可以使用该TO_CHAR函数并指定适合您想要显示的地区的格式模型。

SELECT TO_CHAR(date_column, 'DD/MM/YYYY HH24:MI:SS') AS eu_format,
       TO_CHAR(date_column, 'MM/DD/YYYY HH24:MI:SS') AS us_format,
       TO_CHAR(date_column, 'YYYY-MM-DD"T"HH24:MI:SS') AS iso8601_format
FROM   table_name
Run Code Online (Sandbox Code Playgroud)

db<>在这里摆弄

此答案中列出了不同地区的默认格式模型(在将字符串隐式转换为日期时由 SQL 引擎使用,反之亦然,或由某些客户端应用程序用于显示日期)。