日期与时间
引入或更新版本:v1.2.705
日期与时间数据类型
名称 | 别名 | 存储大小 | 分辨率 | 最小值 | 最大值 | 格式 |
---|---|---|---|---|---|---|
DATE | 4 字节 | 天 | 0001-01-01 | 9999-12-31 | YYYY-MM-DD | |
TIMESTAMP | DATETIME | 8 字节 | 微秒 | 0001-01-01 00:00:00.000000 | 9999-12-31 23:59:59.999999 UTC | YYYY-MM-DD hh:mm:ss[.fraction] ,支持最多 6 位微秒精度 |
示例
CREATE TABLE test_dt
(
date DATE,
ts TIMESTAMP
);
DESC test_dt;
结果:
┌────────────────────────────────────────────────┐
│ 字段 │ 类型 │ 可为空 │ 默认值 │ 额外 │
├────────┼───────────┼────────┼─────────┼────────┤
│ date │ DATE │ YES │ NULL │ │
│ ts │ TIMESTAMP │ YES │ NULL │ │
└────────────────────────────────────────────────┘
TIMESTAMP 值可以选择性地包含最多 6 位微秒精度的尾随小数部分。
-- 向表中插入值
INSERT INTO test_dt
VALUES
('2022-04-07', '2022-04-07 01:01:01.123456'),
('2022-04-08', '2022-04-08 01:01:01');
SELECT *
FROM test_dt;
结果:
┌─────────────────────────────────────────────┐
│ date │ ts │
├────────────────┼────────────────────────────┤
│ 2022-04-07 │ 2022-04-07 01:01:01.123456 │
│ 2022-04-08 │ 2022-04-08 01:01:01 │
└─────────────────────────────────────────────┘
Databend 支持多种 TIMESTAMP 值格式。
-- 创建一个表来测试不同的时间戳格式
CREATE TABLE test_formats (
id INT,
a TIMESTAMP
);
-- 插入不同格式的时间戳值
INSERT INTO test_formats
VALUES
(1, '2022-01-01 02:00:11'),
(2, '2022-01-02T02:00:22'),
(3, '2022-02-02T04:00:03+00:00'),
(4, '2022-02-03');
SELECT *
FROM test_formats;
结果:
┌───────────────────────────────────────┐
│ id │ a │
├─────────────────┼─────────────────────┤
│ 1 │ 2022-01-01 02:00:11 │
│ 2 │ 2022-01-02 02:00:22 │
│ 3 │ 2022-02-02 04:00:03 │
│ 4 │ 2022-02-03 00:00:00 │
└───────────────────────────────────────┘
Databend 会根据当前时区自动调整并显示 TIMESTAMP 值。
-- 创建一个表来测试带时区调整的时间戳值
CREATE TABLE test_tz (
id INT,
t TIMESTAMP
);
-- 设置时区为 UTC
SET timezone = 'UTC';
-- 插入考虑不同时区的时间戳值
INSERT INTO test_tz
VALUES
(1, '2022-02-03T03:00:00'),
(2, '2022-02-03T03:00:00+08:00'),
(3, '2022-02-03T03:00:00-08:00'),
(4, '2022-02-03'),
(5, '2022-02-03T03:00:00+09:00'),
(6, '2022-02-03T03:00:00+06:00');
SELECT *
FROM test_tz;
结果:
┌───────────────────────────────────────┐
│ id │ t │
├─────────────────┼─────────────────────┤
│ 1 │ 2022-02-03 03:00:00 │
│ 2 │ 2022-02-02 19:00:00 │
│ 3 │ 2022-02-03 11:00:00 │
│ 4 │ 2022-02-03 00:00:00 │
│ 5 │ 2022-02-02 18:00:00 │
│ 6 │ 2022-02-02 21:00:00 │
└───────────────────────────────────────┘
-- 将时区更改为 Asia/Shanghai
SET timezone = 'Asia/Shanghai';
-- 使用新的时区设置从表中选择数据
SELECT *
FROM test_tz;
结果:
┌───────────────────────────────────────┐
│ id │ t │
├─────────────────┼─────────────────────┤
│ 1 │ 2022-02-03 11:00:00 │
│ 2 │ 2022-02-03 03:00:00 │
│ 3 │ 2022-02-03 19:00:00 │
│ 4 │ 2022-02-03 08:00:00 │
│ 5 │ 2022-02-03 02:00:00 │
│ 6 │ 2022-02-03 05:00:00 │
└───────────────────────────────────────┘