当前位置:  开发笔记 > 数据库 > 正文

为什么CAST(SYSDATE AS CHAR)不提供与TO_CHAR()相同的细节?

如何解决《为什么CAST(SYSDATEASCHAR)不提供与TO_CHAR()相同的细节?》经验,为你挑选了1个好方法。

在可能的情况下,我更喜欢使用跨平台可用的功能.所以为了获得当前时间,我尝试了:

CAST(SYSDATE AS CHAR(19))

......但只是'07 -JUL-14'.如果我使用Oracle的本机函数:

TO_CHAR(SYSDATE, 'YYYY-MM-DD hh:mi:ss')

......我得到了我期望的所有细节. 表示值返回的doc页面SYSDATE是日期/时间.那么为什么不CAST(SYSDATE AS CHAR)返回日期/时间值呢?

我很想回答"Oracle,默认情况下,在将它们转换为CHAR或VARCHAR时会截断日期",但我的Oracle经验有限,所以如果专家能给出更好的答案我会留下问题.例如,有什么方法可以改变这种行为吗?是否有一些历史原因导致Oracle决定以CAST这种方式销毁信息?



1> a_horse_with..:

cast使用定义的格式NLS_DATE_FORMAT将其DATE转换为字符串:

SQL*Plus: Release 12.1.0.1.0 Production on Wed Jul 16 00:39:11 2014

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Last Successful login time: Wed Jul 16 2014 00:38:39 +02:00

Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing optio

SQL> alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss';

Session altered.

SQL> select cast(sysdate as varchar(20)) as the_date from dual;

THE_DATE
--------------------
2014-07-16 00:39:27

SQL>
SQL> alter session set nls_date_format = 'dd.mm.yyyy hh24:mi';

Session altered.

SQL> select cast(sysdate as varchar(20)) as the_date from dual;

THE_DATE
--------------------
16.07.2014 00:39

SQL>



推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有