更新时间:2025-07-14 GMT+08:00
分享

日期/时间类型

DataArtsFabric SQL支持的日期/时间类型请参见表1。该类型的操作符和内置函数请参见时间、日期处理函数和操作符

如果其他的数据库时间格式和DataArtsFabric SQL的时间格式不一致,可通过修改配置参数DateStyle的值来保持一致。

表1 日期/时间类型

名称

描述

存储空间

DATE

Oracle兼容模式下等价于timestamp(0),记录日期和时间。

其他模式下,记录日期。

Oracle兼容模式下,占存储空间8字节

其他模式下,占存储空间4字节

TIMESTAMP[(p)] [WITHOUT TIME ZONE]

日期和时间。

p表示小数点后的精度,取值范围为0~6。

8字节

示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
--创建表。
CREATE TABLE date_type_t1(
DA_COL1 DATE
) STORE AS orc;

--插入数据。
INSERT INTO date_type_t1 VALUES (date '12-10-2010');

--查看数据。
SELECT * FROM date_type_t1;
  da_col1   
------------
 2010-12-10
(1 row)

--删除表。
DROP TABLE date_type_t1;

--创建表。
CREATE TABLE timestamp_type_t1
(
TS_COL1 TIMESTAMP,
TS_COL2 TIMESTAMP(1) WITHOUT TIME ZONE,
TS_COL3 TIMESTAMP(6) WITHOUT TIME ZONE
) STORE AS orc;
--插入数据。
INSERT INTO timestamp_type_t1 VALUES ('2024-11-15 21:21:21.2565455', '2024-11-15 21:21:21.2565455', '2024-11-15 21:21:21.2565455');
--查看数据。
SELECT * FROM timestamp_type_t1;
          ts_col1           |          ts_col2           |          ts_col3           
----------------------------+----------------------------+----------------------------
 2024-11-15 21:21:21.256545 | 2024-11-15 21:21:21.256545 | 2024-11-15 21:21:21.256545
(1 row)

--删除表。
DROP TABLE timestamp_type_t1;

日期输入

日期和时间的输入几乎可以是任何合理的格式,包括ISO-8601格式、SQL-兼容格式、传统POSTGRES格式或者其它的形式。系统支持按照日、月、年的顺序自定义日期输入。如果把DateStyle参数设置为MDY就按照“月-日-年”解析,设置为DMY就按照“日-月-年”解析,设置为YMD就按照“年-月-日”解析。

日期的文本输入需要加单引号包围,语法如下:

type [ ( p ) ] 'value'

可选的精度声明中的p是一个整数,表示在秒域中小数部分的位数。表2显示了date类型的输入方式。

表2 日期输入方式

例子

描述

1999-01-08

ISO 8601格式(建议格式),任何方式下都是1999年1月8号。

January 8, 1999

在任何datestyle输入模式下都无歧义。

1/8/1999

有歧义,在MDY模式下是一月八号,在DMY模式下是八月一号。

1/18/1999

MDY模式下是一月十八日,其它模式下被拒绝。

01/02/03

  • MDY模式下的2003年1月2日。
  • DMY模式下的2003年2月1日。
  • YMD模式下的2001年2月3日。

1999-Jan-08

任何模式下都是1月8日。

Jan-08-1999

任何模式下都是1月8日。

08-Jan-1999

任何模式下都是1月8日。

99-Jan-08

YMD模式下是1月8日,否则错误。

08-Jan-99

一月八日,除了在YMD模式下是错误的之外。

Jan-08-99

一月八日,除了在YMD模式下是错误的之外。

19990108

ISO 8601;任何模式下都是1999年1月8日。

990108

ISO 8601;任何模式下都是1999年1月8日。

1999.008

年和年里的第几天。

J2451187

儒略日。

January 8, 99 BC

公元前99年。

示例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
--创建表。
CREATE TABLE date_style_t1(DAT_COL1 DATE) STORE AS orc;

--插入数据。
INSERT INTO date_style_t1 VALUES(date '12-10-2010');

--查看数据。
SELECT  * FROM date_style_t1;
      dat_col1       
---------------------
 2010-12-10 00:00:00
(1 row)

--查看日期格式。
SHOW datestyle;
 DateStyle 
-----------
 ISO, MDY
(1 row)

--设置日期格式。
SET datestyle='YMD';
SET

--插入数据。
INSERT INTO date_style_t1 VALUES(date '2010-12-11');

--查看数据。
SELECT  * FROM date_style_t1;
      dat_col1       
---------------------
 2010-12-10 
 2010-12-11 
(2 rows)

--删除表。
DROP TABLE date_style_t1;

时间

时间类型支持timestamp [ (p) ] without time zone。如果只写timestamp等效于timestamp without time zone。

如果在time without time zone类型的输入中声明了时区,则会忽略这个时区。

时间输入类型的详细信息请参见表3,时区输入类型的详细信息请参见表4

表3 时间输入

例子

描述

05:06.8

ISO 8601

4:05:06

ISO 8601

4:05

ISO 8601

40506

ISO 8601

4:05 AM

与04:05一样,AM不影响数值

4:05 PM

与16:05一样,输入小时数必须<= 12

04:05:06.789-8

ISO 8601

04:05:06-08:00

ISO 8601

04:05-08:00

ISO 8601

040506-08

ISO 8601

04:05:06 PST

缩写的时区

表4 时区输入

例子

描述

PST

太平洋标准时间(Pacific Standard Time)

-8:00

ISO 8601与PST的偏移

-800

ISO 8601与PST的偏移

-8

ISO 8601与PST的偏移

特殊值

DataArtsFabric SQL支持几个特殊值,在读取的时候将被转换成普通的日期/时间值,请参考表5

表5 特殊值

输入字符串

适用类型

描述

epoch

date,timestamp

1970-01-01 00:00:00+00 (Unix系统零时)

infinity

timestamp

比任何其他时间戳都晚

-infinity

timestamp

比任何其他时间戳都早

now

date,time,timestamp

当前事务的开始时间

today

date,timestamp

今日午夜

tomorrow

date,timestamp

明日午夜

yesterday

date,timestamp

昨日午夜

allballs

time

00:00:00.00 UTC

相关文档