
# 日期/时间类型
DataArts Fabric SQL支持的日期/时间类型请参见[表1]。该类型的操作符和内置函数请参见[时间、日期处理函数和操作符](https://support.huaweicloud.com/devg-fabric/dataartsfabric_sql_04_0207.html)。
![](https://support.huaweicloud.com/devg-fabric/public_sys-resources/note_3.0-zh-cn.png)
如果其他的数据库时间格式和DataArts Fabric SQL的时间格式不一致，可通过修改配置参数[DateStyle](https://support.huaweicloud.com/devg-fabric/dataartsfabric_sql_04_0185.html)的值来保持一致。
 表1日期/时间类型 
| 名称                                     | 描述                                                                                                                | 存储空间                                                                                |
|:---|:---|:---|
| DATE                                   | Oracle兼容模式下等价于timestamp(0)，记录日期和时间。 其他模式下，记录日期。 | Oracle兼容模式下，占存储空间8字节 其他模式下，占存储空间4字节 |
| TIMESTAMP\[(p)\] \[WITHOUT TIME ZONE\] | 日期和时间。 p表示小数点后的精度，取值范围为0\~6。                    | 8字节                                                                                 |
   
示例：
```
--创建表。
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年。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
   
示例：
```
--创建表。
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的偏移                |
   
#### 特殊值
DataArts Fabric 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                   |
   
