如何在 Oracle 数据库中插入日期和时间?

How to insert date and time in Oracle databases?

我的 TRANSACTION table 中有一列名为 TxDate,另一列名为 TxTime。我无法理解 TO_DATE 函数的工作原理。根据我所做的研究,以下陈述看起来是正确的。有人可以帮助我了解如何在 Oracle 中添加日期和时间。干杯

INSERT INTO TRANSACTION 
VALUES(
    TxNbr_Seq.nextval, 
    'X', 
    1000001, 
    123.45, 
    TO_DATE('2019/05/1', 'yyyy/mm/dd'), 
    TO_DATE('12:00', 'HR:MI'), 
    '101'
);

不要将日期和时间组件存储在单独的表中。

首先,Oracle 没有 time 数据类型:它只有 date 数据类型,用于存储日期和时间部分。

其次,以这种方式进行通常效率低下。迟早,您最终会连接日期和时间组件以便能够执行正确的日期比较。两者一起存储就简单多了,如果需要单独显示就用日期函数。

所以,只用一个列来存储日期和时间,比如 txDate,然后:

INSERT INTO TRANSACTION -- better enumerate the target columns here
VALUES(
    TxNbr_Seq.nextval, 
    'X', 
    1000001, 
    123.45, 
    TO_DATE('2019/05/01 12:00', 'yyyy/mm/dd hh24:mi'),
    '101'
);

请注意,Oracle 使用 hh24(或 hh12,或 hh,如果您使用 AM/PM 格式)来指定小时格式而不是 hr .

那么如果需要单独显示日期和时间,可以使用日期格式化函数:

to_char(txDate, 'yyyy/mm/dd') txDay,
to_char(txDate, 'hh24:mi'   ) txTime