专题实验 日期类型

专题实验 日期类型

存储的时间表示与标准时间 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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 有序的hashmap_在待排序的元素基本有序的前提下

    有序的hashmap_在待排序的元素基本有序的前提下如何给HashMap中的值排序?这个问题很多人都遇到过,很常见的一个方案是使用LinkedHashMap,因为LinkedHashMap可以记住元素放入的顺序,可以认为是真正的“有序”(想让HashMap有序是不可能的),我比较喜欢。然而问题是往往数据已经封装在了HashMap中,我们必须手动的排序后再放入LinkedHashMap,这当然也就成了思路,代码实现起来也很简单,写出来看起来还挺舒服的…

    2025年8月5日
    3
  • 图解GitHub和SourceTree 入门教程 使用教程

    图解GitHub和SourceTree 入门教程 使用教程–>本教程适用于github和bitbucket和gitee等主流代码托管仓库,个人认为sourceTree还是比较好用的git客户端,支持windows和macos,当然也不排斥使用纯命令行的朋友。sourceTree配合高级的命令行,可以很方便快速的应用到项目中。–>soureceTree的最新版本可能与此教程的screenshot有些许不同,但大同小异(source…

    2022年7月25日
    16
  • 打印控件功能演示lodop_前端打印插件

    打印控件功能演示lodop_前端打印插件WEB打印控件Lodop技术手册目      录一、概述1二、系统文件1install_lodop32.exe和 install_lodop64.exe1LodopFuncs.js2三、控件参数6Caption6Color6Border6四、功能函数71、基本函数7VERSION7PRINT_INIT7SET_PRI…

    2025年9月16日
    8
  • 深度残差网络(ResNet)之ResNet34的实现和个人浅见[通俗易懂]

    深度残差网络(ResNet)之ResNet34的实现和个人浅见[通俗易懂]残差网络是由来自MicrosoftResearch的4位学者提出的卷积神经网络,在2015年的ImageNet大规模视觉识别竞赛(ImageNetLargeScaleVisualRecognitionChallenge,ILSVRC)中获得了图像分类和物体识别的优胜。**残差网络的特点是容易优化,并且能够通过增加相当的深度来提高准确率。其内部的残差块使用了跳跃连接(shortcut),缓解了在深度神经网络中增加深度带来的梯度消失问题**。残差网络(ResNet)的网络结构图举例如下:

    2022年10月6日
    2
  • 第 3.3 节 Leetcode-Database 题解

    第 3.3 节 Leetcode-Database 题解

    2021年3月12日
    174
  • QACTION_QA百科

    QACTION_QA百科【详细描述】       QAction类提供了抽象的用户界面action,这些action可以被放置在窗口部件中。       应用程序可以通过菜单,工具栏按钮以及键盘快捷键来调用通用的命令。由于用户期望每个命令都能以相同的方式执行,而不管命令所使用的用户界面,这个时候使用action来表示这些命令就显得十分有用。        Actions可以被添加到菜单和工具栏中,并…

    2022年4月19日
    51

发表回复

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

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