向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;
- 浏览: 512631 次
文章分类
- 全部博客 (573)
- Java (57)
- Android (79)
- 锻炼 (0)
- database (35)
- clean code (1)
- linux (15)
- liferay (1)
- webservice (3)
- gradle (9)
- webservice,spring (1)
- httpclient (5)
- 工程 (1)
- log (8)
- android studio (22)
- spring (15)
- Java,Eclipse (4)
- jmeter (3)
- ndk (2)
- Mac (13)
- AR (1)
- jetty (2)
- http (2)
- springmvc (11)
- 注解 (1)
- IOS (166)
- javascript (5)
- servlet (1)
- eclipse (5)
- GCM (1)
- git (12)
- Android开源资料 (1)
- SQL (10)
- openCV (2)
- JVM (1)
- Ldap (1)
- maven (2)
- 正则表达式 (1)
- TCP/IP (1)
- Kotlin (12)
- intellij idea (5)
- Spring Boot (5)
- tomcat (3)
- 设计模式 (1)
- Django (6)
- python (11)
- springboot (7)
- photoshop (1)
- 树莓派 (5)
- spring cloud (3)
- homebrew (1)
- React Native (15)
- flutter (3)
- 爬虫 (1)
- Dart (1)
- js (4)
- AI (3)
- 密码学 (4)
- 笔记 (1)
- 前端 (19)
- CTF (6)
- LeetCode (2)
- MS Office (1)
- 项目管理 (1)
- docker (1)
最新评论
发表评论
-
[MySql]如何修改AUTO_INCREMENT起始值
2020-01-16 16:08 627参考:https://stackoverflow.com/q ... -
(转)[MySQL]8.0报错c.exceptions.jdbc4.MySQLNonTransientConnectionException
2020-01-15 14:13 335转自:https://blog.csdn.net/weixi ... -
[MySQL]ERROR 1822 : Failed to add the foreign key constraint. Missing index for
2019-12-11 18:19 1178在处理跨schema添加外键的时候,使用语句添加: ALT ... -
[MySQL]Error when foreign referencing in mySQL (Error 3780)
2019-12-05 14:02 527参考:https://stackoverflow.com/q ... -
(转)[MySQL]collate区分大小写
2019-09-05 10:35 476转自:https://www.cnblogs.com/c ... -
使用Visual Paradigm如何复制表格
2019-08-20 17:50 484如果直接使用ctrl+c ctrl+v来复制表格,复制出来的 ... -
[DB]如何在linux安装mysql8.0
2019-05-28 11:26 558在官网下载rpm package Guide: http ... -
(转)[DB]MySQL workbench连接vps的数据库
2019-04-30 14:41 462转自:https://blog.csdn.net/u013 ... -
[MySQL]mysql update select 从查询结果中更新数据
2019-03-22 19:24 897参考自:https://blog.csdn.net/qq_ ... -
[Java]通过Jdbc调用存储过程
2019-03-06 15:49 5921.sql语句:call storeProcedure(a ... -
[Raspberry]升级MySQL
2019-03-01 20:11 365参考:https://askubuntu.com/quest ... -
[MySQL]存储过程(store procedure)相关
2019-03-01 16:29 4731.变量: set @var=xx; //全局 sel ... -
[MySQL]如何在Spring中配置连接池
2019-02-27 11:59 615配置数据库几种方法: 1.DriverManagerDa ... -
[MySQL]修改列属性
2019-02-25 19:16 642alter table UMG_MSG_LOG modify ... -
[SQL]Boolean Field in Oracle
2019-02-22 19:14 381参考:https://stackoverflow.com/q ... -
(转)[Jdbc]jdbcTemplate.queryForInt()方法过时的处理办法
2019-02-21 16:08 687转自:https://blog.csdn.net/clnyb ... -
(转)[Oracle]Oracle SQL Developer Data Modeler使用教程
2019-01-10 12:06 1370转自:https://blog.csdn.net/qq_2 ... -
oracle DUAL表
2017-08-21 15:31 553dual是一个虚拟表,用来构成select的语法规则,ora ... -
java.sql.SQLException: ORA-00911: invalid character 解决方法(转)
2016-10-21 18:48 582java.sql.SQLException: ORA-009 ... -
(转)oracle 中GROUP BY的用法
2016-09-28 17:17 663转自: http://blog.csdn.net/base ...
相关推荐
TO_DATE格式(以时间:2007-11-0213:45:25为例) Year: yytwodigits两位年显示值:07 yyythreedigits三位年显示值:007 yyyyfourdigits四位年显示值:2007 Month: mmnumber两位月显示值:11 monabbreviated字符集表示显示值...
§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 ...
日期类型 date 7字节 用于存储表中的日期和时间数据,取值范围是公元前4712年1月1日至公元9999年12月31日,7个字节分别表示世纪、年、月、日、时、分和秒 二进制数据类型 row 1~2000字节 可变长二进制数据,在具体...
Oracle中的日期和字符串互相转换 时间:2011-01-07 10:30:51来源:网络 作者:未知 点击:744次 TO_DATE格式(以时间:2007-11-02 13:45:25为例) Year: yy two digits 两位年 显示值:07 yyy three digits 三位年 ...
查询该用户下的注释不为空的表 SQL> select * from user_tab_comments where comments is not null; 5.如何在ORACLE中取毫秒? select systimestamp from dual; 6.如何在字符串里加回车? 添加一个||chr(10) ...
1》以12小时制显示 SQL>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> select to_...
三、 Oracle数据库数据查询 1、单表查询 2、多表查询 四、 SQL*PLUS常用命令 表1 常用报表格式化名命令 命令 定义 Btitle 为报表的每一页设置底端标题 Column 设置列的标题和格式 Compute 让SQL*PLUS计算各种值 ...
说明: 与 NLS_TIME_FORMAT 相似, 只不过它设置的是 TIMESTAMP 数据类型的默认值, 该数据类型既存储YEAR, MONTH 和 DAY 这几个日期值, 也存储 HOUR, MINUTE 和 SECOND 这几个时间值。 语法: TIMESTAMP '1997-01-31 ...
ORACLE常用命令 一、ORACLE的启动和关闭 1、在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a、启动ORACLE系统 oracle>svrmgrl SVRMGR>connect internal SVRMGR>startup ...
教程文档ORACLE日期时间函数大全 TO_DATE格式(以时间:2007-11-02 13:45:25为例) Year: yy two digits 两位年 显示值:07 yyy three digits 三位年 显示值:007 yyyy four digits 四位年 显示值:2007
5、DATE数据类型,使用7个字节固定长度,每个字节分别存储世纪,年,月,日 ,时,分,秒,ORACLE中SYSDATE函数的功能是返回当前的日期和时间 6、TIMESTAMP数据类型,和DATE相似,但是这个类型的秒精确到小数点后6...
他认为对于SQL的学习是永无止境的,相信每一个查询Oracle数据库的人都需要精通SQL语言,才能写出高效的查询。他参与本书的编写就是为了帮助别人实现这一目标。 目录 封面 -11 封底 -10 扉页 -9 版权 -8 版权声明 -7...
导入/导出是ORACLE幸存的最古老的两个命令行工具,其实我从来不认为Exp/Imp是一种好的备份方式,正确的说法是Exp/Imp只能是一个好的转储工具,特别是在小型数据库的转储,表空间的迁移,表的抽取,检测逻辑和物理...
//(函数to-date 查询公司在所给时间以后入职的人员) 43、select sal from emp where sal > to_number('$1,250.00', '$9,999.99'); //(函数to_number()求出这种薪水里带有特殊符号的) 44、select ename, sal*12 + ...
ORA-01035: ORACLE 只允许具有 RESTRICTED SESSION 权限的用户使用 6、startup force 强制启动方式 当不能关闭数据库时,可以用startup force来完成数据库的关闭 先关闭数据库,再执行正常启动数据库命令 7、...
大多数SQL实现支持以下类型的函数: 文本处理, 算术运算, 日期和时间, 数值处理。 Null:空值 空值当成无穷大处理,所有空值参与的运算皆为空。 空值与空值并不相等,因为空值不能直接运算。 如:prod_price...
3、数字和日期都可以使用数学运算符建立表达式。 ...............................................................9 4、定义空(NULL)值 ....................................................................
--(函数to-date 查询公司在所给时间以后入职的人员) 43、select sal from emp where sal > to_number('$1,250.00', '$9,999.99'); --(函数to_number()求出这种薪水里带有特殊符号的) 44、select ename, sal*12 ...