`

(转) oracle_查询date只显示日期不显示时间

 
阅读更多

向oracle数据库插入时间,其中时间是00:00:00 为甚么插入后在数据库只显示日期不显示时间?
推荐答案2011-11-15 18:19
显示时间需要将日期型列转换成字符型,使用to_char(日期, 'yyyy-mm-dd hh24:mi:ss')或者修改oracle缺省日期格式。
追问
我是说在数据库里面,在PL/SQL里查询结果只有日期没有时间,但是现在要在数据表中显示时间。
回答
oracle是没有datetime这个数据类型的,只有date数据类型date包含时间,但是查询时是不显示时间的(事实上数据库中是存时间的),
想要看到时间需要用to_char进行转换,或者更改oracle缺省的日期格式。


很简单,用to_char()函数即可
获取日期: to_char(sysdate, 'yyyy-mm-dd');
获取时间: to_char(sysdate, 'hh24:mi:ss');
to_date('2012-02-10 00:00:00','yyyy-mm-dd hh24:mi:ss')

oracle date类型默认只显示日期,不显示时间
//http://www.itkee.com/database/detail-4b.html
工作中要用到 Oracle 10g,经常要向其中的某张表插入事件发生的日期及时间。专门就 Oracle 的日期及时间显示方式和插入方式记一笔。
像 Number,varchar2 等内置的数据类型一样,Oracle 用 Date 这个内置的数据类型来存储日期和时间。和 MS SQL Server 一样,日期和时间是存储在一个数据类型里的,没有只存储时间或只存储日期的单独的时间和日期数据类型。DATE 数据类型存储年月日和时分秒。


当显示 DATE 类型的数据时,Oracle 先要把存储的值从内部保存格式转化为可输出的字符串。通常,这种转换是通过 TO_CHAR 这个函数来完成的。如果没有用 TO_CHAR 函数来指定特定的日期时间格式,Oracle 默认的显示格式是“DD-MON-YY”。


例如,我们创建了一个表 x:
create table abc(a int, b date);
然后我们执行下面的查询语句:
select b from abc;
我们会看到如下结果(set head on):
B
------------ 
01-APR-09 
(语言是英语) 或 B
------------- 
01-四月 -09 
(语言是中文)
也就是说,每次显示 DATE 类型的数值时,Oracle 会自动调用 TO_CHAR 函数,并以默认日期显示格式为参数。我们可以显式地调用 TO_CHAR 函数,并指定自己想要的格式。例如:


SELECT TO_CHAR(b, 'YYYY/MM/DD') AS b FROM abc;


返回的结果是:


B
------------ 
2010/09/01
TO_CHAR 是个很强大的函数,可以把 Date,MLSLABEL,Number 类型的数据按指定的格式转换为 VARCHAR2 类型的数据,我们在这里只关心日期时间的转换。语法:


TO_CHAR(d [, fmt [, 'nlsparams'] ])


d 是 Date 类型的变量,fmt 是我们指定的日期时间格式,如果不显式指定就用 Oracle 的默认值。 fmt 里常用的跟日期时间有关的占位符如下:


MM 用数字表示的月份(例如,07)
MON 缩写的月份名称(例如,JUL)
MONTH 完整的月份名称(例如,JULY)
DD 日期(例如, 24)
DY 星期几的缩写(例如,FRI)
YYYY 用4位表示的年份(例如, 2008)
YY 用2位表示的年份,取年份的后两位(例如,08)
RR 跟 YY 类似,但两位表示的年份被近似到 1950 到 2049 这个范围里的年份,例如 06 被认为是 2006,而不是 1906
AM (或 PM) 上下午指示符
HH 12进制表示的时间(1-12)
HH24 24进制表示的时间(0-23)
MI 分钟(0-59)
SS 秒(0-59)
以上讲的是利用 TO_CHAR 函数来显示 DATE 类型的数据,下面讲讲如何向表里插入一个 Date 类型的数值。这时我们要用到 TO_DATE 这个函数,把字符串表示的日期转换为 Date 类型。


跟 Oracle 显示日期时间时会隐性调用 TO_CHAR 函数一样,当 Oracle 期望一个 Date 类型的值时,它会隐性调用 TO_DATE 函数来转换输入的字符串,依据的默认格式是“DD-MON-YY”。


还是以我们的 x 表为例,我们可以直接输入:


insert into abc values(99, '31-may-08');
但是,在显示时不管用什么格式都不会影响我们实际储存的数据;在插入时,单纯采用 Oracle 的默认格式就不是那么符合工作需要了,我们还是需要显式调用 TO_DATE 函数,例如:


insert into abc values(99, to_date('2008/05/31:12:00:00AM', 'yyyy/mm/dd:hh:mi:ssam'));
TO_DATE 函数的语法:


TO_DATE(char [, fmt [, 'nlsparams'] ])


char 是表示日期和时间的字符串。fmt 的表示方法和 TO_CHAR 函数一样。


我们前面一直提到 Oracle 默认的日期时间格式是“DD-MON-YY”,其实,我们还可以修改这个默认格式,把它改成我们需要的格式。在 SQL*plus 里面输入下面的命令:


alter session set NLS_DATE_FORMAT='<my_format>';   ――这个改变只对当前的会话(session)有用。


例如:


SQL> alter   session   set   nls_date_format='yyyy-mm-dd';
会话已更改。
SQL> insert  into  abc (b)  values('2004-08-26');
已创建1行。
用 Oracle 内置的函数 SYSDATE 可以返回系统当前的日期和时间,例如:
select to_char(sysdate, 'Dy DD-Mon-YYYY HH24:MI:SS') as "Current Time" from dual;

分享到:
评论

相关推荐

    Oracle中TO_DATE格式介绍

    TO_DATE格式(以时间:2007-11-0213:45:25为例) Year: yytwodigits两位年显示值:07 yyythreedigits三位年显示值:007 yyyyfourdigits四位年显示值:2007 Month: mmnumber两位月显示值:11 monabbreviated字符集表示显示值...

    Oracle8i_9i数据库基础

    §10.1.3 在查询中只返回满足条件的部分记录 214 §10.1.4 快速大量删除数据Truncate 215 §10.1.5 Rowid的使用 215 §10.1.6 在查询中不让记录被更新 217 §10.1.7 EXCEPTIONS(违反完整性)问题 217 §10.1.8 Not ...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    日期类型 date 7字节 用于存储表中的日期和时间数据,取值范围是公元前4712年1月1日至公元9999年12月31日,7个字节分别表示世纪、年、月、日、时、分和秒 二进制数据类型 row 1~2000字节 可变长二进制数据,在具体...

    Oracle中的日期和字符串互相转换

    Oracle中的日期和字符串互相转换 时间:2011-01-07 10:30:51来源:网络 作者:未知 点击:744次 TO_DATE格式(以时间:2007-11-02 13:45:25为例) Year: yy two digits 两位年 显示值:07 yyy three digits 三位年 ...

    Oracle练习.txt

    查询该用户下的注释不为空的表 SQL&gt; select * from user_tab_comments where comments is not null; 5.如何在ORACLE中取毫秒? select systimestamp from dual; 6.如何在字符串里加回车? 添加一个||chr(10) ...

    Oracle to_char 日期转换字符串语句分享

    1》以12小时制显示 SQL&gt;select to_char(sysdate,’YYYY-MM-DD HH12:MI:SS AM’)from dual; TO_CHAR(SYSDATE,’YYYY-MM-DDHH1 —————————— 2007-06-29 02:50:06 下午 2》以24小时制显示 SQL&gt; select to_...

    oracle实验报告

    三、 Oracle数据库数据查询 1、单表查询 2、多表查询 四、 SQL*PLUS常用命令 表1 常用报表格式化名命令 命令 定义 Btitle 为报表的每一页设置底端标题 Column 设置列的标题和格式 Compute 让SQL*PLUS计算各种值 ...

    Oracle9i的init.ora参数中文说明

    说明: 与 NLS_TIME_FORMAT 相似, 只不过它设置的是 TIMESTAMP 数据类型的默认值, 该数据类型既存储YEAR, MONTH 和 DAY 这几个日期值, 也存储 HOUR, MINUTE 和 SECOND 这几个时间值。 语法: TIMESTAMP '1997-01-31 ...

    最全的oracle常用命令大全.txt

    ORACLE常用命令 一、ORACLE的启动和关闭 1、在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a、启动ORACLE系统 oracle&gt;svrmgrl SVRMGR&gt;connect internal SVRMGR&gt;startup ...

    orcale日期函数

    教程文档ORACLE日期时间函数大全 TO_DATE格式(以时间:2007-11-02 13:45:25为例) Year: yy two digits 两位年 显示值:07 yyy three digits 三位年 显示值:007 yyyy four digits 四位年 显示值:2007

    Oracle 数据类型

    5、DATE数据类型,使用7个字节固定长度,每个字节分别存储世纪,年,月,日 ,时,分,秒,ORACLE中SYSDATE函数的功能是返回当前的日期和时间 6、TIMESTAMP数据类型,和DATE相似,但是这个类型的秒精确到小数点后6...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    他认为对于SQL的学习是永无止境的,相信每一个查询Oracle数据库的人都需要精通SQL语言,才能写出高效的查询。他参与本书的编写就是为了帮助别人实现这一目标。 目录 封面 -11 封底 -10 扉页 -9 版权 -8 版权声明 -7...

    oracle详解

    导入/导出是ORACLE幸存的最古老的两个命令行工具,其实我从来不认为Exp/Imp是一种好的备份方式,正确的说法是Exp/Imp只能是一个好的转储工具,特别是在小型数据库的转储,表空间的迁移,表的抽取,检测逻辑和物理...

    Oracle练习笔试大全

    //(函数to-date 查询公司在所给时间以后入职的人员) 43、select sal from emp where sal &gt; to_number('$1,250.00', '$9,999.99'); //(函数to_number()求出这种薪水里带有特殊符号的) 44、select ename, sal*12 + ...

    orcale常用命令

    ORA-01035: ORACLE 只允许具有 RESTRICTED SESSION 权限的用户使用 6、startup force 强制启动方式 当不能关闭数据库时,可以用startup force来完成数据库的关闭 先关闭数据库,再执行正常启动数据库命令 7、...

    2009达内SQL学习笔记

    大多数SQL实现支持以下类型的函数: 文本处理, 算术运算, 日期和时间, 数值处理。 Null:空值 空值当成无穷大处理,所有空值参与的运算皆为空。 空值与空值并不相等,因为空值不能直接运算。 如:prod_price...

    oracle从入门到精通

    3、数字和日期都可以使用数学运算符建立表达式。 ...............................................................9 4、定义空(NULL)值 ....................................................................

    精髓Oralcle讲课笔记

    --(函数to-date 查询公司在所给时间以后入职的人员) 43、select sal from emp where sal &gt; to_number('$1,250.00', '$9,999.99'); --(函数to_number()求出这种薪水里带有特殊符号的) 44、select ename, sal*12 ...

Global site tag (gtag.js) - Google Analytics