1.基本概念
时区 :time zone 1884年国际经线会议规定,全球按经度分为24个时区,每区各占经度15°。
以本初子午线为中央经线的时区为零时区,由零时区向东、西各分12区,东、西12区都是半时区,共同使用180°经线的地方时。
CST :China Standard Time UTC+8:00 中国标准时间(北京时间),在东八区
UTC :Universal Time Coordinated,世界协调时间,又称世界标准时间、世界统一时间。UTC 提供了一种与时区无关(或非特定于时区)的时间。
世界上的所有时区都可以表示为 UTC 加上或减去一个偏移量。
因此,UTC是0时区的时间,如北京为早上八点(东八区),UTC时间就为零点,时间比北京时晚八小时
GMT :Greenwich Mean Time格林威治标准时间,指位于英国伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。
Unix timestamp :Unix时间戳,或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,
定义为从格林威治时间(UTC/GMT的午夜)1970年01月01日00时00分00秒起至现在的总秒数。
可以这么说:
UTC和GMT几乎是同一概念,两者的区别是GMT是一个天文上的概念,UTC是基于原子钟。
GMT=UTC
GMT + 8 = UTC + 8 = CST
UTC+时间差=本地时间 (时间差东为正,西为负,东八区记为 +0800)
2、常用日期型数据类型
2.1、DATE
这是ORACLE最常用的日期类型,它可以保存日期和时间,常用日期处理都可以采用这种类型。DATE表示的日期范围可以是公元前4712年1月1日至公元9999年12月31日
date类型在数据库中的存储固定为7个字节,格式为:
第1字节:世纪+100
第2字节:年
第3字节:月
第4字节:天
第5字节:小时+1
第6字节:分+1
第7字节:秒+1
2.2、TIMESTAMP(p)
这也是ORACLE常用的日期类型,它与date的区别是不仅可以保 存日期和时间,还能保存小数秒,小数位数可以指定为0-9,默认为6位,所以最高精度可以到ns(纳秒),数据库内部用7或者11个字节存储,如果精度为 0,则用7字节存储,与date类型功能相同,如果精度大于0则用11字节存储。
格式为:
第1字节:世纪+100
第2字节:年
第3字节:月
第4字节:天
第5字节:小时+1
第6字节:分+1
第7字节:秒+1
第8-11字节:纳秒,采用4个字节存储,内部运算类型为整形
注:TIMESTAMP日期类型如果与数值进行加减运算会自动转换为DATE型,也就是说小数秒会自动去除。
至于两种数据类型的存储方式,可以用dump函数验证。从上面可以看出timestamp不过是date的扩展。
3.公司最近做的一个项目,是把时间用timestamp(距1970年1月1日的GMT时间毫秒数)以long形式存储起来,目的是可以在不同时区获得当地时间。
oracle的timestamp数据类型存储形式如上,可以看出是会受时区影响的。比如存入一条1970-1-1 0:0:0的timestamp时间,java代码取出来存到java.util.Date中。getTime()得到的值是
-28800000。因为CST比GMT早8个小时,CST的1970-1-1 0:0:0即GMT的1969-12-31 16:0:0
相关推荐
Oracle数据库中的DATE和TIMESTAMP是两种用于存储日期和时间信息的数据类型,它们在用途和精度上有显著的区别。 1. DATE数据类型: DATE类型是Oracle中最基础的日期时间数据类型,可以存储日期(年、月、日)和时间...
在Oracle数据库中,`TIMESTAMP`与`DATE`两种数据类型是用于存储日期和时间信息的关键组成部分,但它们之间存在显著的区别,特别是在处理时间和精度方面。本文将深入探讨这两种数据类型的特点,以及如何在实际应用中...
在Oracle数据库中,`TIMESTAMP`是一种用于存储日期和时间的数据类型,它可以精确到毫秒级别。`TIMESTAMP`数据类型不仅包含了日期和时间,还包含了时区信息,这对于处理全球性的业务非常重要。 #### 2. 创建表并插入...
Oracle 数据库中 TIMESTAMP 与 DATE 两个数据类型都是用于存储日期和时间的,但是它们之间有着很大的区别。在本文中,我们将详细比较这两个数据类型的特点、使用场景和优缺点。 DATE 数据类型 DATE 数据类型是 ...
Java 8引入的`java.time`包相比于旧的`java.util.Date`和`java.sql.Timestamp`,在性能和易用性上都有显著提升。但在数据库层面,Oracle也有优化的索引策略,如B树索引或函数索引,来提高对Timestamp with Time Zone...
Oracle数据库中的`DATE`和`TIMESTAMP`是两种常见的日期和时间数据类型,它们在处理时间信息时有着不同的特性和用途。 首先,`DATE`数据类型是我们最常使用的,它可以存储日期和时间,包括世纪、年、月、日、小时、...
在Oracle数据库中,Date类型是用于存储日期和时间值的关键数据类型。Oracle Date常用方法封装通常涉及对日期的计算、格式化以及与时间戳的转换等操作。在Oracle环境中,我们可以通过PL/SQL来实现这些功能,将常用的...
Oracle中的时间是Date型,以下函数提供了两种时间转换的Oracle函数 --unix时间戳与date时间互转 SELECT oracle_to_unix(SYSDATE),unix_to_oracle(1551774286),oracle_to_unix(SYSDATE) FROM dual;
在Oracle数据库中,`TIMESTAMP` 是一种用于存储日期和时间数据类型的字段,与传统的`DATE`类型相比,它的精度更高,能够精确到小数秒。`TIMESTAMP` 类型的精度可设置为 0 到 9 位,缺省情况下是 6 位,这意味着它...
Oracle数据库支持多种日期和时间数据类型,包括DATE、TIMESTAMP、INTERVAL等。DATE类型是最基础的,它包含了日期和时间部分,精确到秒。TIMESTAMP则更进一步,不仅包含日期和时间,还能够存储微秒级别的精度。...
最后,Oracle 还提供了其他日期函数,如 current_timestamp 函数,可以返回当前日期和时间,包括毫秒级的精度。例如: select to_char(current_timestamp(5),'DD-MON-YYYY HH24:MI:SSxFF') from dual; 在上面的...
本文将详细介绍 `to_date()` 的使用方法、参数格式以及常见问题解决方法。 #### 二、基本语法与格式 `to_date()` 函数的基本语法如下: ```sql TO_DATE (expression, format_mask) ``` 其中: - `expression`: ...
2、timestamp转成date型 代码如下: select cast(to_timestamp(’01-10月-08 07.46.41.000000000 上午’,’dd-MON-yy hh:mi:ss.ff AM’) as date) timestamp_to_datefrom dual; 3、date型转成timestamp 代码如下:...
在Oracle中,日期和时间存储有多种类型,如DATE、TIMESTAMP等。项目中可能涉及的问题是如何在Java和Oracle之间转换Date对象。Java的Date类和Oracle的日期格式可能不完全匹配,因此需要进行适当的格式化或转换。这里...
- 对于需要同时包含日期和时间的情况,可以考虑使用Oracle的`TIMESTAMP`类型,该类型可以很好地映射到DB2/400中的`TIMESTAMP`类型。 #### 三、数值类型 - **Oracle NUMBER**: 可以表示整数和浮点数,其精度和存储...
在Oracle数据库中,时间数据类型通常包括DATE、TIMESTAMP以及INTERVAL等,处理这些时间数据时,有时需要根据业务需求设定特定的显示格式。本文将详细介绍如何在Oracle中设置时间格式,以满足不同场景下的需求。 1. ...
通过上述对比可以看出,尽管Oracle和DB2在某些基本操作上存在相似之处,但它们在具体实现细节上仍有较大不同。了解这些差异有助于数据库管理员和技术人员根据特定需求选择最适合的技术方案。无论是从性能优化还是...
Oracle数据库中的`to_date`函数是用于将字符串转换为日期数据类型的函数,它在处理日期和时间相关的操作时非常常用。`to_date`的主要参数是一个包含日期信息的字符串,以及一个可选的日期格式模型,用于指定输入字符...
本章节详细介绍了 Oracle 日期和时间的存储与处理,包括使用 DATE 类型存储日期和时间、使用时间戳(timestamp)存储日期和时间、使用时间间隔(interval)存储时间的长度,以及存储和检索日期的简单例子。