Aar*_* Fi 67 oracle date-formatting
Oracle的默认日期格式为YYYY-MM-DD.这意味着如果我这样做:
select some_date from some_table
Run Code Online (Sandbox Code Playgroud)
......我失去了约会的时间部分.
是的,我知道你可以用以下方式解决这个问题:
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
Run Code Online (Sandbox Code Playgroud)
但说真的,为什么不是上面的默认值?特别是在DBMS中,两个主要时间跟踪数据类型(DATE和TIMESTAMP)都具有包括(至少)精度低至1秒的时间分量.
ska*_*man 82
您确定不会将Oracle数据库与Oracle SQL Developer混淆吗?
数据库本身没有日期格式,日期以原始格式从数据库中出来.由客户端软件来呈现它,并且SQL Developer 确实使用YYYY-MM-DD作为其默认格式,这是无用的,我同意.
编辑:正如下面评论的那样,SQL Developer可以重新配置为正确显示DATE值,它只有错误的默认值.
Dou*_*ter 54
如果您使用此查询为数据仓库生成输入文件,则需要适当地格式化数据.基本上在这种情况下,您将日期(具有时间组件)转换为字符串.您需要显式格式化字符串或更改nls_date_format以设置默认值.在您的查询中,您可以简单地执行:
select to_char(some_date, 'yyyy-mm-dd hh24:mi:ss') my_date
from some_table;
Run Code Online (Sandbox Code Playgroud)
Jam*_*son 12
Oracle最大的PITA就是没有默认的日期格式!
在您的Oracle安装中,Locales和安装选项的组合选择了(非常明智的!)YYYY-MM-DD作为输出日期的格式.另一个装置可以选择"DD/MM/YYYY"或"YYYY/DD/MM".
如果你希望你的SQL可以移植到另一个Oracle站点,我建议你总是TO_CHAR(datecol,'YYYY-MM-DD')
在SQL的每个日期列周围 包含一个或类似的函数,或者在你连接之后立即设置defualt格式.
ALTER SESSION
SET NLS_DATE_FORMAT = 'DD-MON-YYYY HH24:MI:SS';
Run Code Online (Sandbox Code Playgroud)
或类似的.
依赖默认值设置为特定值,恕我直言,无论是日期格式,货币格式,优化模式还是其他任何东西,都是明智之举.您应始终在服务器,客户端或应用程序中设置所需的日期格式的值.
特别是,在转换日期或数字数据类型以进行显示时,永远不要依赖默认值,因为对数据库的单个更改可能会破坏您的应用程序.始终使用显式转换格式.多年来我一直在Oracle系统上工作,其中开箱即用的默认日期显示格式是MM/DD/RR,这让我疯狂,但至少迫使我总是使用显式转换.
大多数IDE可以为某种数据配置默认掩码,如日期,货币,小数点分隔符等.
如果您正在使用Oracle SQL Developer:
工具>首选项>数据库> NLS
日期格式:YYYY-MM-DD HH24:MI:SS
根据SQL标准的DATE值为YYYY-MM-DD。因此,即使Oracle存储了时间信息,我的猜测是它们正在以与SQL标准兼容的方式显示值。在标准中,有TIMESTAMP数据类型,其中包括日期和时间信息。
这是客户端的"问题",而不是Oracle问题.
它是以这种方式格式化和显示日期的客户端应用程序.
在你的情况下,它是SQL*Plus执行此格式化.
其他SQL客户端具有其他默认值.
归档时间: |
|
查看次数: |
429109 次 |
最近记录: |