如何在oracle中检查表中特定列的日期格式?oracleDATE数据类型是否能够同时存储两种格式(美国和欧洲(?如果是的话,有没有办法区分哪个是月,哪个是日期?
在Oracle中,DATE
是一种二进制数据类型,由7个字节组成,表示每个
- 世纪
- 世纪之年
- 月份
- 天
- 小时
- 分钟;以及
- 第二
它ALWAYS具有这些组件,并且它被NEVER以任何特定格式存储。
如何在oracle中检查表中特定列的日期格式?
它没有任何格式,因此您不能。
如果您想查看DATE
的二进制值,可以使用DUMP
函数:
SELECT DUMP(date_column) FROM table_name;
oracle
DATE
数据类型是否能够同时存储两种格式(美国和欧洲(?
不,它从不存储任何格式。
如果要存储格式化的数据,请使用字符串数据类型;然而,对于日期来说,这通常被认为是一种糟糕的做法,因为如果同时使用DD/MM/YYYY
和MM/DD/YYYY
,则会在天和月之间产生歧义。最佳做法是将日期存储为DATE
,然后在DISPLAY日期时选择适当的格式。
如果要DISPLAYDATE
日期类型,则可以使用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
db<gt;小提琴这里
此答案中列出了不同区域的默认格式模型(SQL引擎在隐式将字符串转换为日期时使用,反之亦然,或者某些客户端应用程序在DISPLAY日期时使用(。
Oracle日期以内部二进制数据格式存储。显示格式由客户端处理,不存储。
这与数字相同,例如,根据to_char
函数使用的格式掩码,相同的值可以显示为1000、1000.00、1e3等。