首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >哪种数据类型用于存储Oracle10g中的DateTime?

哪种数据类型用于存储Oracle10g中的DateTime?
EN

Stack Overflow用户
提问于 2012-08-09 01:59:58
回答 2查看 25.2K关注 0票数 8

在Oracle 10g数据库中,使用哪种数据类型来存储日期时间(不仅是日期,而且还有时间)?我读过“Oracle 10g中的日期数据类型可以存储日期时间”(可能是错误的),但是当我尝试这样做时,事情似乎没有发生。

日期数据类型是日期时间数据类型。它存储一个日期和一个时间。日期部分是基于自公元前4712年1月1日以来的天数。时间部分是根据午夜以来的秒数计算的.链接

我使用以下SQL通过Java作为前端并直接在Oracle终端上进行了尝试。

代码语言:javascript
运行
复制
insert into discount 
values(7, 'Code', 12.5, to_date('11-AUG-2012 06:05:23', 'dd-mon-yyyy hh:mi:ss'), 
to_date('20-AUG-2012 07:50:23', 'dd-mon-yyyy hh:mi:ss'))

它可以工作,但是(在这两种情况下) Oracle只是忽略时间部分,并且只插入SQL中指定的日期,而没有任何错误?

哪种数据类型用于存储Oracle 10g中的日期时间?是TimeStamp吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-09 02:24:59

甲骨文中的DATE总是有一个日期组件和一个时间组件。假设DISCOUNT表中的最后两列被声明为DATE,那么Oracle完全不可能忽略时间组件。

是什么让你相信时间部分被忽略了?我猜您是通过运行如下所示的查询来检查数据的

代码语言:javascript
运行
复制
SELECT *
  FROM discount

来自SQL*Plus、、蟾蜍或其他GUI。如果这样做,默认情况下,显示的日期将只包含“日期”组件,而不是“时间”组件,这并不意味着时间组件将被丢弃。相反,这是一个默认的NLS_DATE_FORMAT不显示时间组件的结果。您可以通过在查询中执行显式TO_CHAR来强制显示时间组件(请注意,我在猜测列的名称)

代码语言:javascript
运行
复制
SELECT discount_id, 
       discount_type, 
       discount_amt, 
       to_char( discount_start_date, 'MM/DD/YYYY HH24:MI:SS' ),
       to_char( discount_end_date, 'MM/DD/YYYY HH24:MI:SS' )
  FROM discount

或者通过更改默认的NLS_DATE_FORMAT

代码语言:javascript
运行
复制
ALTER SESSION SET nls_date_format = 'MM/DD/YYYY HH24:MI:SS';
SELECT *
  FROM discount;
票数 11
EN

Stack Overflow用户

发布于 2012-08-09 02:25:16

甲骨文DATE也包括时间。来自文档

数据类型概述 日期数据类型在表中存储时间点值(日期和时间)。日期数据类型存储年份(包括世纪)、月、日、小时、分钟和秒(午夜之后)。

可能是您使用的工具(,SQL*Plus)欺骗了您。试一试

代码语言:javascript
运行
复制
select to_char(your_date, 'dd-mm-yy hh:mi:ss') from discount

还请注意,日期数据类型只存储到秒。TIMESTAMPTIMESTAMP WITH TIME ZONE更精确。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11875750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档