日期/时间类型
DataArtsFabric SQL支持的日期/时间类型请参见表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类型的输入方式。
例子 |
描述 |
---|---|
1999-01-08 |
ISO 8601格式(建议格式),任何方式下都是1999年1月8号。 |
January 8, 1999 |
在任何datestyle输入模式下都无歧义。 |
1/8/1999 |
有歧义,在MDY模式下是一月八号,在DMY模式下是八月一号。 |
1/18/1999 |
MDY模式下是一月十八日,其它模式下被拒绝。 |
01/02/03 |
|
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类型的输入中声明了时区,则会忽略这个时区。
特殊值
DataArtsFabric SQL支持几个特殊值,在读取的时候将被转换成普通的日期/时间值,请参考表5。