gpt4 book ai didi

java - Oracle 10g 中使用哪种数据类型来存储 DateTime?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:37:28 26 4
gpt4 key购买 nike

Oracle 10g数据库中用什么数据类型来存储日期时间(既有日期也有时间)?我读过一些地方(可能是错误的)“Oracle 10g 中的日期数据类型可以存储日期时间”,但是当我尝试这样做时,事情似乎并没有发生。

The DATE datatype is a datetime datatype. It stores a date and a time. The date portion is based on the number of days since January 1, 4712 BC. The time portion is based on the number of seconds since mid-night. The link

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

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 吗?

最佳答案

Oracle 中的 DATE 总是有一个日期组件和一个时间组件。假设 DISCOUNT 表中的最后两列被声明为 DATE,Oracle 完全忽略时间部分的可能性很小。

是什么让您相信时间部分被忽略了?我的猜测是您正在通过运行类似

的查询来检查数据
SELECT *
FROM discount

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

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

ALTER SESSION SET nls_date_format = 'MM/DD/YYYY HH24:MI:SS';
SELECT *
FROM discount;

关于java - Oracle 10g 中使用哪种数据类型来存储 DateTime?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11875750/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com