向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;
- 浏览: 546617 次
文章分类
- 全部博客 (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 695参考:https://stackoverflow.com/q ... -
(转)[MySQL]8.0报错c.exceptions.jdbc4.MySQLNonTransientConnectionException
2020-01-15 14:13 396转自:https://blog.csdn.net/weixi ... -
[MySQL]ERROR 1822 : Failed to add the foreign key constraint. Missing index for
2019-12-11 18:19 1285在处理跨schema添加外键的时候,使用语句添加: ALT ... -
[MySQL]Error when foreign referencing in mySQL (Error 3780)
2019-12-05 14:02 578参考:https://stackoverflow.com/q ... -
(转)[MySQL]collate区分大小写
2019-09-05 10:35 581转自:https://www.cnblogs.com/c ... -
使用Visual Paradigm如何复制表格
2019-08-20 17:50 535如果直接使用ctrl+c ctrl+v来复制表格,复制出来的 ... -
[DB]如何在linux安装mysql8.0
2019-05-28 11:26 610在官网下载rpm package Guide: http ... -
(转)[DB]MySQL workbench连接vps的数据库
2019-04-30 14:41 519转自:https://blog.csdn.net/u013 ... -
[MySQL]mysql update select 从查询结果中更新数据
2019-03-22 19:24 941参考自:https://blog.csdn.net/qq_ ... -
[Java]通过Jdbc调用存储过程
2019-03-06 15:49 6451.sql语句:call storeProcedure(a ... -
[Raspberry]升级MySQL
2019-03-01 20:11 414参考:https://askubuntu.com/quest ... -
[MySQL]存储过程(store procedure)相关
2019-03-01 16:29 5201.变量: set @var=xx; //全局 sel ... -
[MySQL]如何在Spring中配置连接池
2019-02-27 11:59 658配置数据库几种方法: 1.DriverManagerDa ... -
[MySQL]修改列属性
2019-02-25 19:16 685alter table UMG_MSG_LOG modify ... -
[SQL]Boolean Field in Oracle
2019-02-22 19:14 432参考:https://stackoverflow.com/q ... -
(转)[Jdbc]jdbcTemplate.queryForInt()方法过时的处理办法
2019-02-21 16:08 750转自:https://blog.csdn.net/clnyb ... -
(转)[Oracle]Oracle SQL Developer Data Modeler使用教程
2019-01-10 12:06 1446转自:https://blog.csdn.net/qq_2 ... -
oracle DUAL表
2017-08-21 15:31 594dual是一个虚拟表,用来构成select的语法规则,ora ... -
java.sql.SQLException: ORA-00911: invalid character 解决方法(转)
2016-10-21 18:48 626java.sql.SQLException: ORA-009 ... -
(转)oracle 中GROUP BY的用法
2016-09-28 17:17 717转自: http://blog.csdn.net/base ...
相关推荐
- 使用 `NLS_DATE_LANGUAGE` 参数指定语言环境来显示日期: - 示例: `SELECT TO_CHAR(TO_DATE('2002-08-26', 'YYYY-MM-DD'), 'DAY', 'NLS_DATE_LANGUAGE=American') FROM DUAL;` - **计算两个日期之间的天数差**: ...
2. **处理NULL值**: 在查询中,如果日期可能为NULL,则可以使用`TO_DATE(NULL)`来处理这种情况。 ```sql SELECT ID, ACTIVE_DATE FROM TABLE1 UNION SELECT 1, TO_DATE(NULL) FROM DUAL; ``` 3. **月份差**: ...
4. **处理特定语言环境下的日期显示**: ```sql ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN'; SELECT TO_CHAR(TO_DATE('2002-08-26', 'yyyy-mm-dd'), 'day') FROM dual; ``` 5. **计算两个日期之间的差值*...
在Oracle数据库中,日期操作是常见的SQL查询任务,特别是在处理历史数据或进行时间相关的分析时。Oracle提供了丰富的函数来帮助用户对日期进行加减操作,这些功能强大且灵活的函数使得开发者能更精确地处理时间数据...
在Oracle数据库中,并不存在`datetime`这一数据类型,而是通过`date`类型来实现日期与时间的综合处理。`date`类型可以表示日期和时间,它固定占用7个字节的空间。本篇文章将详细介绍Oracle中的`date`类型以及其内部...
例如,`a_date BETWEEN to_date('20011201', 'yyyymmdd') AND to_date('20011231', 'yyyymmdd')`会包含12月1日和31日的整日,但不包括这两个日期之外的时间点。因此,对于精确的时间比较,可能需要对`to_char()`进行...
总的来说,Oracle的日期处理功能强大且灵活,`to_date`函数及其相关操作是日常数据库操作中不可或缺的部分,它们帮助开发者精确地处理和展示日期时间数据。理解并熟练掌握这些函数的用法,对于数据库管理、查询优化...
在Oracle数据库中,时间数据类型通常包括DATE、TIMESTAMP以及INTERVAL等,处理这些时间数据时,有时需要根据业务需求设定特定的显示格式。本文将详细介绍如何在Oracle中设置时间格式,以满足不同场景下的需求。 1. ...
SYSDATE返回当前系统日期,TO_DATE将字符串转换为日期格式,ADD_MONTHS在日期上添加指定的月数,EXTRACT则可以从日期时间值中提取部分(如年、月、日)。 4. **转换函数**: TO_CHAR、TO_NUMBER、TO_DATE等,用于...
在Oracle SQL中,日期和时间处理是数据库管理的关键部分,`TO_DATE`函数提供了灵活的方式来处理日期和时间数据,使得我们可以方便地进行日期格式的转换、日期计算以及与字符串之间的相互转换。 1. **日期和字符转换...
在Oracle数据库中,日期是数据处理的核心部分,无论是记录事务发生的时间、设定时间窗口进行数据分析,还是设置基于时间的触发器,都离不开对日期的查询和操作。本篇将深入探讨Oracle关于日期的查询语句及其相关知识...
`NLS_DATE_LANGUAGE` 和其他NLS参数控制着日期和时间的显示语言和地区格式。可以通过以下语句查看和设置: ```sql SELECT * FROM NLS_SESSION_PARAMETERS; SELECT * FROM V$NLS_PARAMETERS; ALTER SYSTEM SET NLS_...
Oracle 时间函数应用指南 Oracle 时间函数是 Oracle 数据库中处理日期和时间的核心组件。时间函数可以将字符串...转换函数、日期比较、时间查询、日期语言设置和日期格式冲突问题都是 Oracle 时间函数中的重要应用。
同时,Oracle 也提供了多种日期及时间格式的转换函数,例如 TO_DATE、TO_TIMESTAMP 等,可以将不同格式的日期及时间字符串转换为标准的日期及时间格式。 在实际应用中,了解 Oracle 日期及时间格式可以帮助开发者更...
Oracle数据库在日期处理方面提供了丰富的函数和操作方式,使得对日期和时间的管理变得非常灵活。以下是对标题和描述中提到的知识点的详细说明: 1. **日期和字符转换**: - `to_date` 函数用于将字符型数据转换为...
Oracle 使用 NLS_DATE_FORMAT 环境变量来影响默认的日期显示格式,但这通常只影响显示,而不影响日期的解析或计算。如果你想在特定查询中改变日期格式,你应该在 `TO_CHAR` 或 `TO_DATE` 函数中显式地指定格式模式。...
4. **时间戳转换**:在Oracle中,DATE类型包含日期和时间信息,但不包括纳秒级别的时间戳。如果需要处理高精度的时间戳,可以使用FROM_TZ和TO_TIMESTAMP_TZ函数。例如: ```sql DECLARE my_timestamp TIMESTAMP ...
在Oracle数据库中,日期时间数据类型主要包括`DATE`、`TIMESTAMP`及其变体(如`TIMESTAMP WITH TIME ZONE`、`TIMESTAMP WITH LOCAL TIME ZONE`)以及`INTERVAL`数据类型。这些数据类型被广泛应用于记录日期、时间...
Oracle数据库中的`TO_DATE`函数是一个非常重要的日期和时间转换函数,它允许用户将字符串转换成日期类型。在处理日期相关的数据时,了解并熟练掌握`TO_DATE`函数的使用方式至关重要。以下是对`TO_DATE`函数及其相关...
在Oracle数据库中,`TIMESTAMP`与`DATE`两种数据类型是用于存储日期和时间信息的关键组成部分,但它们之间存在显著的区别,特别是在处理时间和精度方面。本文将深入探讨这两种数据类型的特点,以及如何在实际应用中...