嘿,我有一个数据库,里面有一个已开始的和完整的时间戳。现在,我需要第三个时间差,它是我想通过计算完成的-在我的java代码中变量的setter中开始的,那么这个列应该是什么数据类型呢?
发布于 2017-11-23 10:05:29
在Oracle中,您希望使用间隔来表示时间差,因此可以使用INTERVAL DAY TO SECOND或INTERVAL YEAR TO MONTH数据类型。
但是,您真的需要第三栏吗?您可以根据需要从其他两列计算它(甚至可以创建虚拟列,而不是存储计算的值)。然后,您将不会出现更新开始或结束以及忘记更新差异列以及它们变得不同步的问题。
Oracle 11g R2架构设置
CREATE TABLE your_table (
start_time TIMESTAMP,
end_time TIMESTAMP,
difference GENERATED ALWAYS AS ( end_time - start_time )
);
INSERT INTO your_table ( start_time, end_time )
SELECT SYSTIMESTAMP, SYSTIMESTAMP + INTERVAL '01:02:03' HOUR TO SECOND FROM DUAL;查询1
SELECT *
FROM your_table| START_TIME | END_TIME | DIFFERENCE |
|-------------------------|-------------------------|------------|
| 2017-11-23 10:12:06.741 | 2017-11-23 11:14:09.741 | 0 1:2:3.0 |发布于 2017-11-23 10:20:38
它应该是返回数字,当你减去两个不同的日期,将返回不同的日子。
谢谢坦加马尼·埃拉尼扬
https://stackoverflow.com/questions/47452564
复制相似问题