Oracle的默认日期格式为YYYY-MM-DD。也就是说如果我这么做了:
select some_date from some_table
...I丢失了我约会的时间部分。
是的,我知道你可以通过以下方式“修复”这个问题:
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
但说真的,为什么上面的不是默认值呢?尤其是在DBMS中,两种主要的时间跟踪数据类型(DATE和TIMESTAMP)都有一个包含(至少)精度到1秒的时间分量。
发布于 2009-12-03 22:03:53
如果使用此查询为数据仓库生成输入文件,则需要适当地格式化数据。从本质上讲,在这种情况下,您将日期(具有时间部分)转换为字符串。您需要显式格式化字符串或更改nls_date_format以设置默认值。在您的查询中,您可以简单地这样做:
select to_char(some_date, 'yyyy-mm-dd hh24:mi:ss') my_date
from some_table;
发布于 2009-12-03 16:04:10
您确定没有将Oracle数据库与Oracle SQL Developer混淆吗?
数据库本身没有日期格式,日期以原始形式从数据库中出来。这取决于客户端软件来呈现它,SQL Developer确实使用YYYY-MM-DD作为其默认格式,我同意这几乎是无用的。
编辑:正如下面评论的那样,SQL Developer可以重新配置为正确显示日期值,只是它有错误的默认值。
发布于 2009-12-03 15:47:20
无论是日期格式、货币格式、优化器模式还是其他任何格式,依赖默认值设置为一个特定值IMHO都是不明智的。您应该始终在服务器、客户端或应用程序中设置所需的日期格式值。
特别是,在转换日期或数字数据类型以用于显示时,切勿依赖默认值,因为对数据库的一次更改都可能中断应用程序。始终使用显式转换格式。多年来,我在Oracle系统上工作,开箱即用的默认日期显示格式是MM/DD/RR,这让我抓狂,但至少迫使我总是使用显式转换。
https://stackoverflow.com/questions/1837974
复制相似问题