首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >oracle sql中的时间差列应该是什么数据类型?

问oracle sql中的时间差列应该是什么数据类型?
EN

Stack Overflow用户
提问于 2017-11-23 09:58:34
回答 2查看 77关注 0票数 1

嘿,我有一个数据库,里面有一个已开始的和完整的时间戳。现在,我需要第三个时间差,它是我想通过计算完成的-在我的java代码中变量的setter中开始的,那么这个列应该是什么数据类型呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-23 10:05:29

在Oracle中,您希望使用间隔来表示时间差,因此可以使用INTERVAL DAY TO SECOND或INTERVAL YEAR TO MONTH数据类型。

但是,您真的需要第三栏吗?您可以根据需要从其他两列计算它(甚至可以创建虚拟列,而不是存储计算的值)。然后,您将不会出现更新开始或结束以及忘记更新差异列以及它们变得不同步的问题。

SQL Fiddle

Oracle 11g R2架构设置

代码语言:javascript
复制
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

代码语言:javascript
复制
SELECT *
FROM   your_table

结果

代码语言:javascript
复制
|              START_TIME |                END_TIME | DIFFERENCE |
|-------------------------|-------------------------|------------|
| 2017-11-23 10:12:06.741 | 2017-11-23 11:14:09.741 |  0 1:2:3.0 |
票数 3
EN

Stack Overflow用户

发布于 2017-11-23 10:20:38

它应该是返回数字,当你减去两个不同的日期,将返回不同的日子。

谢谢坦加马尼·埃拉尼扬

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

https://stackoverflow.com/questions/47452564

复制
相关文章

相似问题

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