专题实验 日期类型

专题实验 日期类型

存储的时间表示与标准时间 UTC 的时差, UTC 表示0:0

date: 不带时区, 存储日期和时间, 精确到秒

timestamp: 不带时区, 存储日期和时间, 精确到小数点后9位

timestamp with timezone: 包括时区, 客户端时区和UTC的时区差, 例如: ‘1999-04-15 8:00:00-8:00′  这里是 负8小时.

timestamp with local timezone: 存储到数据库时, 会发生转换. 存储的是客户端所在时区, 转换: 客户端所在时区->UTC->db所在时区, 所以如果db所在时区设置成UTC, 那么右边就不需要转换.

注意, 这个转换都是先转换成 utc, 然后再从UTC像另一种时间转换, 所以, 如果需要存储 timestamp with local timezong 这种类型, 建议将DB TIME ZONE 设置成 UTC, 这样, 转换的次数可以减少一次.

面对这么多类型, 什么时候使用什么类型 ?

  • 如果对时间要求到小数的秒, 则可以选择 TIMESTAMP
  • 如果希望数据库能够自动在数据库时区和会话时区之间进行时间转换, 使用TIMESTAMP WITH LOCAL TIME ZONE
  • 如果希望跟踪数据入口的会话时区, 使用 timestamp with time zone.
  • 我们可以使用 timestamp 类型代替 date类型, 一个不带亚秒精度信息的 timestamp 会占用 7个字节, 和date一样, 如果 timestamp 带有压秒数据, 就会占用 11 个字节的存储空间.

其他一些考虑:

  • 要是必须和 timestamp 数据类型出现之前的已有应用程序相兼容, 就的使用 DATE 类型.
  • 如果使用数据库是 oracle 9i 以前的版本, 我们别无选择只能用 DATE 类型.

Interval

interval year to month:

interval day to second:

下边是计算工龄的例子

   1:  -- chap10_02.sql
   2:  declare
   3:      start_date TIMESTAMP;
   4:      end_date TIMESTAMP;
   5:      service_interval interval year to month;
   6:      years_of_service number;
   7:      months_of_service number;
   8:  begin
   9:      start_date := to_timestamp('29-dec-1988', 'dd-mon-yyyy');
  10:      end_date := to_timestamp('26-dec-1995', 'dd-mon-yyyy');
  11:      
  12:      -- 确定工龄, 并显示出来:
  13:      service_interval := (end_date - start_date) year to month;
  14:      dbms_output.put_line(service_interval);
  15:      
  16:      years_of_service := extract(year from service_interval);
  17:      months_of_service := extract(month from service_interval);
  18:      dbms_output.put_line(years_of_service || 'years and ' || months_of_service || 'months');
  19:  end;
  20:  /
  21:  show errors;

oracle 分为两大时区

数据库时区 select dbtimezone from dual

session时区 select sessiontimezone from dual

alter session set nls_date_format = ‘YYYY-MM-DD HH24:MI: SS’;

在了解了相关数据类型后,那么我们该如何在它们之间做出选择呢?

当你不需要保存时区/地区信息的时候,选择使用TIMESTAMP数据类型,因为它一般需要7-11bytes的存储空间,可以节省空间。

当你需要保存时区/地区信息的时候,请选择使用TIMESTAMP WITH TIMEZONE数据类型。比如一个跨国银行业务应用系统,需要精确纪录每一笔交易的时间和地点(时区),在这种情况下就需要纪录时区相关信息。因为需要纪录时区相关信息,所以需要多一些的存储空间,一般需要13bytes。

当你并不关心操作发生的具体地点,而只是关心操作是在你当前时区(当地)几点发生的时候,选择使用TIMESTAMP WITH LOCALTIME ZONE。比如一个全球统一的change controlsystem。用户可能只关心某某操作是在我的时间几点发生的(比如中国用户看到的是北京时间8:00am,而伦敦的用户看到的是0:00am)。记住,此类行不保存时区/地区信息,因此如果需要保存相关信息的要慎重!

转载于:https://www.cnblogs.com/moveofgod/p/3790324.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109801.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • CSS鼠标悬浮及其样式

    CSS鼠标悬浮及其样式hover鼠标悬浮的使用和定义用法示例选择鼠标指针浮动在其上的元素,并设置其样式:.box:hover{background-color:red;}定义和用法:hover选择器用于选择鼠标指针浮动在上面的元素。提示:hover选择器可用于所有元素:link选择器设置指向未被访问页面的链接的样式,:visited选择器用于设置指向已被访问的页面…

    2022年5月31日
    32
  • 卡尔曼滤波系列——(一)标准卡尔曼滤波[通俗易懂]

    卡尔曼滤波系列——(一)标准卡尔曼滤波[通俗易懂]卡尔曼滤波(KalmanFilter)是一种利用线性系统状态方程,利用对系统的观测数据,对系统状态进行最优估计的算法。由于观测数据受到系统中的噪声和干扰的影响,所以系统状态的估计过程也可看作是滤波过程。应用场景之一有利用传感器跟踪感兴趣目标的位置,传感器获取的目标距离、速度、方位角等观测值往往含有噪声。卡尔曼滤波利用目标的动态信息与观测结果相结合,抑制噪声的影响,从而获得一个关于目标位置更准确的估计,这个估计可以是对当前目标位置的估计(滤波),也可以是对于将来位置的估计(预测),也可以是对过去位置的估计(

    2022年6月17日
    28
  • 关于Delay函数的思考

    关于Delay函数的思考可能很多人对延时函数的使用并不排斥,但是我个人觉得这是非常不符合软件的本质的。软件的本质是将现实中的各种行为抽象。以现实中人的活动为例,人在同一时刻是可以实时响应很多事情的,而Delay函数的出现相当于给CPU上了刹车

    2022年5月5日
    36
  • Java 并发专题 : Timer的缺陷 用ScheduledExecutorService替代「建议收藏」

    Java 并发专题 : Timer的缺陷 用ScheduledExecutorService替代「建议收藏」继续并发,上篇博客对于ScheduledThreadPoolExecutor没有进行介绍,说过会和Timer一直单独写一篇Blog.1、Timer管理延时任务的缺陷a、以前在项目中也经常使用定时器,比如每隔一段时间清理项目中的一些垃圾文件,每个一段时间进行数据清洗;然而Timer是存在一些缺陷的,因为Timer在执行定时任务时只会创建一个线程,所以如果存在多个任务,且任务时间过长,超过了两

    2022年6月2日
    42
  • python编写简单网页_python制作动态数据图

    python编写简单网页_python制作动态数据图Django项目是一个定制的框架,可以和Python一起相结合制作网页。Django框架是用于创建模型的对象关系映射,也是为最终用户设计完美的管理界面。学习python语言的朋友可能尝试过用Django做一个网站,有的朋友可能会用bootstrap的CSS库来做,事实上做的还挺好看的。本文给大家介绍的是一个简单的网页制作,利用pythonDjango来做的,下面我们一起来看看吧。1、创建一个d…

    2022年10月13日
    1
  • 鸿蒙3部曲先看哪部,星辰变是“鸿蒙”系列的作品,那“鸿蒙”系列到底有多少部曲?…

    鸿蒙3部曲先看哪部,星辰变是“鸿蒙”系列的作品,那“鸿蒙”系列到底有多少部曲?…说到《星辰变》,相信很多人都知道他的作者就是番茄吧?而番茄笔下最出名系列的小说,无疑就是“鸿蒙”系列了,其中《星辰变》就是“鸿蒙”系列中的一部作品。那“鸿蒙”系列小说到底有多少部曲呢?对此也有很多人有了这个疑问。原先的“鸿蒙三部曲”相信很多熟悉番茄小说的朋友都知道,原本番茄的《盘龙》《星辰变》《吞噬星空》被很多粉丝称之为“鸿蒙三部曲”。因为在《星辰变》的结局中我们也知道,鸿蒙创立了三个不同的世界,…

    2022年6月15日
    144

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号