docs: format

This commit is contained in:
Simon Guan 2025-03-06 17:11:13 +08:00
parent 545a9c5311
commit 9122b3b0a2
1 changed files with 19 additions and 19 deletions

View File

@ -25,13 +25,13 @@ TDengine 在不同组件中均支持使用 IANA 时区(除 Windows taos.cfg
标准时间是根据地球上某个固定经线确定的时间。它为各个时区提供了一个统一的参考点。
- 格林尼治标准时间GMT历史上使用的参考时间位于0°经线。
- 格林尼治标准时间GMT历史上使用的参考时间位于 经线。
- 协调世界时UTC现代的时间标准类似于GMT但更加精确。
标准时间与时区的关系如下:
- 基准:标准时间(如 UTC是时区设定的基准点。
- 偏移量不同时区通过相对于标准时间的偏移量来定义。例如UTC+1表示比 UTC 快 1 小时。
- 偏移量不同时区通过相对于标准时间的偏移量来定义。例如UTC+1 表示比 UTC 快 1 小时。
- 区域划分:全球被划分为多个时区,每个时区使用一个或多个标准时间。
相对于标准时间,每个地区根据其所在时区设定其当地时间:
@ -45,7 +45,7 @@ TDengine 在不同组件中均支持使用 IANA 时区(除 Windows taos.cfg
按照这个规则,可以看到:
- 柏林当地时间 2024 年 3 月 31 日 02:00:00 到 03:00:00 (不含 03:00:00之间的时间不存在跳变
- 柏林当地时间 2024 年 03 月 31 日 02:00:00 到 03:00:00 (不含 03:00:00之间的时间不存在跳变
- 柏林当地时间 2024 年 10 月 27 日 02:00:00 到 03:00:00 (不含 03:00:00之间的时间出现了两次。
#### 夏令时与 IANA 时区数据库
@ -56,8 +56,8 @@ TDengine 在不同组件中均支持使用 IANA 时区(除 Windows taos.cfg
#### 夏令时与时间戳转换
- 时间戳转为当地时间是确定的。例如1729990654 为柏林时间 夏令时 2024-10-27 02:57:341729994254 为柏林时间 冬令时 2024-10-27 02:57:34 (这两个本地时间除时间偏移量外是一样的)。
- 不指定时间偏移量时,当地时间转为时间戳是不确定的。夏令时跳过的时间不存在会造成无法转换成时间戳,如 柏林时间 2024-03-31 02:34:56 不存在,所以无法转换为时间戳。夏令时结束时重复导致无法确定是哪个时间戳,如 2024-10-27 02:57:34 不指定时间偏移量无法确定 是 1729990654 还是 1729994254。指定时间偏移量才能确定时间戳如 2024-10-27 02:57:34 CEST(+02:00) ,指定了夏令时 2024-10-27 02:57:34 时间戳 1729990654 。
- 时间戳转为当地时间是确定的。例如1729990654 为柏林时间**夏令时** `2024-10-27 02:57:34`1729994254 为柏林时间**冬令时** `2024-10-27 02:57:34`(这两个本地时间除时间偏移量外是一样的)。
- 不指定时间偏移量时,当地时间转为时间戳是不确定的。夏令时跳过的时间不存在会造成无法转换成时间戳,如 **柏林时间** `2024-03-31 02:34:56` 不存在,所以无法转换为时间戳。夏令时结束时重复导致无法确定是哪个时间戳,如 `2024-10-27 02:57:34` 不指定时间偏移量无法确定 是 1729990654 还是 1729994254。指定时间偏移量才能确定时间戳`2024-10-27 02:57:34 CEST(+02:00) `,指定了夏令时 `2024-10-27 02:57:34` 时间戳 1729990654 。
### RFC3339 时间格式
@ -103,7 +103,7 @@ select * from t1 where ts >= '2024-10-27T01:59:59.000Z';
### 表格分析
- 在**夏令时开始**(柏林时间 3月31日 02:00 )时,时间直接从 02:00 跳到 03:00往后跳一小时
- 在**夏令时开始**(柏林时间 3 31 日 02:00时间直接从 02:00 跳到 03:00往后跳一小时
- 浅绿色是夏令时开始前一小时的时间戳;
- 深绿色是夏令时开始后一小时的时间戳;
- 红色为 TDengine 数据库中插入了不存在的当地时间:
@ -116,23 +116,23 @@ select * from t1 where ts >= '2024-10-27T01:59:59.000Z';
- **UTC 时间不变**UTC 时间保持不变,确保了时间的一致性和顺序性。
- **RFC3339**RFC3339 格式时间显示了时间偏移量的变化,在夏令时开始后变为 +02:00结束后变为 +01:00 。
- **条件查询**
- **夏令时开始**时,跳过的时间(`[03-31 02:00:00,03-31 03:00:00)`)不存在,所以在使用该时间进行查询时,行为不确定:`SELECT ts FROM t1 WHERE ts BETWEEN '2024-03-31 02:00:00' AND '2024-03-31 02:59:59'` (不存在的本地时间戳被转换为 `-1000`:
- **夏令时开始**时,跳过的时间(`[03-31 02:00:00,03-31 03:00:00)`)不存在,所以在使用该时间进行查询时,行为不确定:`SELECT ts FROM t1 WHERE ts BETWEEN '2024-03-31 02:00:00' AND '2024-03-31 02:59:59'`(不存在的本地时间戳被转换为 `-1000`:
```sql
taos> SELECT ts FROM t1 WHERE ts BETWEEN '2024-03-31 02:00:00' AND '2024-03-31 02:59:59';
taos> SELECT ts FROM t1 WHERE ts BETWEEN '2024-03-31 02:00:00' AND '2024-03-31 02:59:59';
ts |
=================
-1000 |
-1000 |
Query OK, 1 row(s) in set (0.003635s)
```
当不存在的时间戳与存在的时间戳共同使用时,其结果同样不符合预期,以下为起始本地时间不存在:
```sql
taos> SELECT ts, to_iso8601(ts,'Z') FROM t1 WHERE ts BETWEEN '2024-03-31 02:00:00' AND '2024-03-31 03:59:59';
taos> SELECT ts, to_iso8601(ts,'Z') FROM t1 WHERE ts BETWEEN '2024-03-31 02:00:00' AND '2024-03-31 03:59:59';
ts | to_iso8601(ts,'Z') |
==================================================
-1000 | 1969-12-31T23:59:59.000Z |
-1000 | 1969-12-31T23:59:59.000Z |
1711843200000 | 2024-03-31T00:00:00.000Z |
1711846799000 | 2024-03-31T00:59:59.000Z |
1711846800000 | 2024-03-31T01:00:00.000Z |
@ -143,11 +143,11 @@ select * from t1 where ts >= '2024-10-27T01:59:59.000Z';
以下语句中第一个 SQL 查询截止时间不存在,第二个截止时间存在,第一个 SQL 查询结果不符合预期:
```sql
taos> SELECT ts, to_iso8601(ts,'Z') FROM t1 WHERE ts BETWEEN '2024-03-31 01:00:00' AND '2024-03-31 02:00:00';
taos> SELECT ts, to_iso8601(ts,'Z') FROM t1 WHERE ts BETWEEN '2024-03-31 01:00:00' AND '2024-03-31 02:00:00';
Query OK, 0 row(s) in set (0.000930s)
taos> SELECT ts, to_iso8601(ts,'Z') FROM t1 WHERE ts BETWEEN '2024-03-31 01:00:00' AND '2024-03-31 01:59:59';
ts | to_iso8601(ts,'Z') |
taos> SELECT ts, to_iso8601(ts,'Z') FROM t1 WHERE ts BETWEEN '2024-03-31 01:00:00' AND '2024-03-31 01:59:59';
ts | to_iso8601(ts,'Z') |
==================================================
1711843200000 | 2024-03-31T00:00:00.000Z |
1711846799000 | 2024-03-31T00:59:59.000Z |
@ -158,8 +158,8 @@ select * from t1 where ts >= '2024-10-27T01:59:59.000Z';
- 查询 `[2024-10-27 02:00:00, 2024-10-27 03:00:00]` 之间的数据结果,包含了两次重复的时间戳和 `2024-10-27 03:00:00` 这个时间点的数据:
```sql
taos> SELECT ts, to_iso8601(ts,'Z'), TO_CHAR(ts, 'YYYY-MM-DD HH:mi:ss') FROM t1 WHERE ts BETWEEN '2024-10-27 02:00:00' AND '2024-10-27 03:00:00';
ts | to_iso8601(ts,'Z') | to_char(ts, 'YYYY-MM-DD HH:mi:ss') |
taos> SELECT ts, to_iso8601(ts,'Z'), TO_CHAR(ts, 'YYYY-MM-DD HH:mi:ss') FROM t1 WHERE ts BETWEEN '2024-10-27 02:00:00' AND '2024-10-27 03:00:00';
ts | to_iso8601(ts,'Z') | to_char(ts, 'YYYY-MM-DD HH:mi:ss') |
=======================================================================================
1729987200000 | 2024-10-27T00:00:00.000Z | 2024-10-27 02:00:00 |
1729990799000 | 2024-10-27T00:59:59.000Z | 2024-10-27 02:59:59 |
@ -173,13 +173,13 @@ select * from t1 where ts >= '2024-10-27T01:59:59.000Z';
```sql
taos> SELECT ts, to_iso8601(ts,'Z'), TO_CHAR(ts, 'YYYY-MM-DD HH:mi:ss') FROM t1 WHERE ts >= '2024-10-27 02:00:00' AND ts <= '2024-10-27 02:57:00.999';
ts | to_iso8601(ts,'Z') | to_char(ts, 'YYYY-MM-DD HH:mi:ss') |
ts | to_iso8601(ts,'Z') | to_char(ts, 'YYYY-MM-DD HH:mi:ss') |
=======================================================================================
1729987200000 | 2024-10-27T00:00:00.000Z | 2024-10-27 02:00:00 |
Query OK, 1 row(s) in set (0.004480s)
```
- 以下查询 [2024-10-27 02:00:01,2024-10-27 02:57:35] 却能查到 3 条数据(包含一条 02:59:59 的当地时间数据):
- 以下查询 `[2024-10-27 02:00:01,2024-10-27 02:57:35]` 却能查到 3 条数据(包含一条 02:59:59 的当地时间数据):
```sql
taos> SELECT ts, to_iso8601(ts,'Z'), TO_CHAR(ts, 'YYYY-MM-DD HH:mi:ss') FROM t1 WHERE ts >= '2024-10-27 02:00:00' AND ts <= '2024-10-27 02:57:35';;
@ -224,7 +224,7 @@ select * from t1 where ts >= '2024-10-27T01:59:59.000Z';
Insert OK, 2 row(s) affected (0.001434s)
taos> select * from t1 where ts between 1711846799000 and 1711846800000;
ts | v1 |
ts | v1 |
===============================
1711846799000 | 1 |
1711846800000 | 2 |