专题实验 日期类型

专题实验 日期类型

存储的时间表示与标准时间 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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • DS-5/RVDS4.0变量初始化错误

    DS-5/RVDS4.0变量初始化错误

  • top命令 详解_top命令的用法

    top命令 详解_top命令的用法top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。下面详细介绍它的使用方法。top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU使用.内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定.1...

  • VUE学习笔记——es6对象合并 数组转对象

    VUE学习笔记——es6对象合并 数组转对象constarr=[{date:”2018-11-18″,name:”demo1″},{date:”2018-11-19″,name:”demo2″}];consttarget={};arr.forEach(a=>{constsource=JSON.parse(`{“${a.date}”:”${a.na…

  • Ubuntu 20.04 虚拟显示器且远程连接

    Ubuntu 20.04 虚拟显示器且远程连接一、配置方法1)安装软件通过终端安装虚拟显示器软件。$sudoapt-getinstallxserver-xorg-core-hwe-18.04$sudoapt-getinstallxserver-xorg-video-dummy2)添加配置文件在/usr/share/X11/xorg.conf.d/中添加xorg.conf文件。$sudovim/usr/share/X11/xorg.conf.d/xorg.confSection”Device”

  • 数据可视化之美 — 以Matlab、Python为工具

    数据可视化之美 — 以Matlab、Python为工具在我们科研、工作中,将数据完美展现出来尤为重要。数据可视化是以数据为视角,探索世界。我们真正想要的是—数据视觉,以数据为工具,以可视化为手段,目的是描述真实,探索世界。下面介绍一些数据可视化的作品(包含部分代码),主要是地学领域,可迁移至其他学科。Example1:importnumpyasnpimportmatplotlib.pyplotasplt#创建随机数n=100000x=np.random.randn(n)y=(1.5*x)+np.ra

    2022年10月31日
  • 如何在eclipse中部署tomcat(生产环境tomcat热部署)

    eclipse环境下如何配置tomcat打开Eclipse,单击“Window”菜单,选择下方的“Preferences”。单击“Server”选项,选择下方的“RuntimeEnvironments”。点击“Add”添加Tomcat。点击“Next”,选中自己安装的Tomcat路径。点击“Finish”完成。建立一个Web应用File→New→DynamicWeb

发表回复

您的电子邮箱地址不会被公开。

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