VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

DATE数据类型

功能描述

date数据类型用于存储日期和时间信息,对于每一个date值:

  • 展示格式为:YYYY/MM/DD,也可以是YYYY/MM/DD HH24:MI:SS
  • 存储格式只有一种:YYYY/MM/DD HH24:MI:SS
  • date类型的值在数据库图形界面中可以有不同的显示格式(具体格式由工具设置决定),但其实际存储格式只是其中一种,当只存储年月日时,date实际存储的是:年月日0时0分0秒,在图形界面中,其展示格式为:YYYY/MM/DD。
  • date类型对插入带有毫秒的部分直接去除毫秒,不进行四舍五入。
  • 支持date数据类型和to_char字符串的转换。

DATE类型的计算

  • date类型的数据相减,结果是number类型(保留小数),结果不含小数部分则展示为整数。

  • sysdate参与日期类乘法,结果返回数值类型。

示例

示例1:使用date数据类型。

1、创建测试表并插入数据。

create table t1(id int,col date,col1 timestamp);
insert into t1 select 1,current_timestamp,current_timestamp from dual;

2、将date数据类型转换为to_char类型,并查询结果。

select id,to_char(col,'yyyy-mm-dd hh24:mi:ss'),to_char(col1,'yyyy-mm-dd hh24:mi:ss.ff6') from t1;

返回结果如下(其中col字段去除毫秒,不会做四舍五入):

 id |       to_char       |          to_char
----+---------------------+----------------------------
  1 | 2022-07-04 17:15:16 | 2022-07-04 17:15:16.174639
(1 row)

3、获取时间的年份。

select to_char(col,'yyyy') as nowyear from t1;

返回结果为当前年份:

 nowyear
---------
 2022
(1 row)

示例2: date类型减法(结果为number类型,由客户端控制保留几位小数)。

select to_date('20220110 10:10:10','yyyymmdd hh24:mi:ss')-to_date('20220101 9:9:9','yyyymmdd hh24:mi:ss')  res from dual;

结果显示如下:

       res
------------------
 9.04237268518519
(1 row)

结果说明:

  • 单位:天(day)。

  • 小数计算方式:日期相差换算为秒数/(24*60*60)。该例中前后相差为9天零1小时零1分零1秒,则结果为9+(1*60*60+1*60+1)/(24*60*60)≈9.04237268518519,由客户端控制保留几位小数,如果客户端控制保留7位,则最终结果为9.04237269。

  • 刚好为整数日时,显示结果不带小数部分。

示例3: 日期相减的差,再做乘法。

select (to_date('20220110 10:10:10','yyyymmdd hh24:mi:ss')-to_date('20220101 9:9:9','yyyymmdd hh24:mi:ss'))*86400  as res from dual;

结果显示如下:

         res
---------------------
 781261.000000000416
(1 row)

示例4:sysdate参与日期类乘法,结果返回数值类型。

sysdate减去一个更早的时间,再乘以5。

select (sysdate-to_date('2020-8-1 12','yyyy-mm-dd hh24'))*5 from dual;

结果显示如下:

     ?column?
-------------------
 3754.983333333335
(1 row)