首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Oracle的默认日期格式是YYYY-MM-DD,为什么?

Oracle的默认日期格式是YYYY-MM-DD,为什么?
EN

Stack Overflow用户
提问于 2009-12-03 14:07:38
回答 9查看 439K关注 0票数 68

Oracle的默认日期格式为YYYY-MM-DD。也就是说如果我这么做了:

代码语言:javascript
复制
 select some_date from some_table

...I丢失了我约会的时间部分。

是的,我知道你可以通过以下方式“修复”这个问题:

代码语言:javascript
复制
 alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

但说真的,为什么上面的不是默认值呢?尤其是在DBMS中,两种主要的时间跟踪数据类型(DATE和TIMESTAMP)都有一个包含(至少)精度到1秒的时间分量。

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2009-12-03 22:03:53

如果使用此查询为数据仓库生成输入文件,则需要适当地格式化数据。从本质上讲,在这种情况下,您将日期(具有时间部分)转换为字符串。您需要显式格式化字符串或更改nls_date_format以设置默认值。在您的查询中,您可以简单地这样做:

代码语言:javascript
复制
select to_char(some_date, 'yyyy-mm-dd hh24:mi:ss') my_date
  from some_table;
票数 56
EN

Stack Overflow用户

发布于 2009-12-03 16:04:10

您确定没有将Oracle数据库与Oracle SQL Developer混淆吗?

数据库本身没有日期格式,日期以原始形式从数据库中出来。这取决于客户端软件来呈现它,SQL Developer确实使用YYYY-MM-DD作为其默认格式,我同意这几乎是无用的。

编辑:正如下面评论的那样,SQL Developer可以重新配置为正确显示日期值,只是它有错误的默认值。

票数 84
EN

Stack Overflow用户

发布于 2009-12-03 15:47:20

无论是日期格式、货币格式、优化器模式还是其他任何格式,依赖默认值设置为一个特定值IMHO都是不明智的。您应该始终在服务器、客户端或应用程序中设置所需的日期格式值。

特别是,在转换日期或数字数据类型以用于显示时,切勿依赖默认值,因为对数据库的一次更改都可能中断应用程序。始终使用显式转换格式。多年来,我在Oracle系统上工作,开箱即用的默认日期显示格式是MM/DD/RR,这让我抓狂,但至少迫使我总是使用显式转换。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1837974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档