DateTime64(precision, [timezone])
在内部,存储数据作为一些 ‘ticks’ 自纪元开始(1970-01-01 00:00:00UTC)作为Int64. 刻度分辨率由precision参数确定。 此外,该 DateTime64
类型可以存储时区是相同的整个列,影响如何的值 DateTime64
类型值以文本格式显示,以及如何解析指定为字符串的值 (‘2020-01-01 05:00:01.000’). 时区不存储在表的行中(或resultset中),而是存储在列元数据中。 查看详细信息 日期时间.
1. 创建一个表 DateTime64
-输入列并将数据插入其中:
CREATE TABLE dt
`timestamp` DateTime64(3, 'Europe/Moscow'),
`event_id` UInt8
ENGINE = TinyLog
INSERT INTO dt Values (1546300800000, 1), ('2019-01-01 00:00:00', 2)
SELECT * FROM dt
┌───────────────timestamp─┬─event_id─┐
│ 2019-01-01 03:00:00.000 │ 1 │
│ 2019-01-01 00:00:00.000 │ 2 │
└─────────────────────────┴──────────┘
- 将日期时间作为整数插入时,将其视为适当缩放的Unix时间戳(UTC)。
1546300800000
(精度为3)表示 '2019-01-01 00:00:00'
UTC. 然而,作为 timestamp
列有 Europe/Moscow
(UTC+3)指定的时区,当输出为字符串时,该值将显示为 '2019-01-01 03:00:00'
- 当插入字符串值作为日期时间时,它被视为处于列时区。
'2019-01-01 00:00:00'
将被视为 Europe/Moscow
时区并存储为 1546290000000
.
2. 过滤 DateTime64
值
SELECT * FROM dt WHERE timestamp = toDateTime64('2019-01-01 00:00:00', 3, 'Europe/Moscow')
┌───────────────timestamp─┬─event_id─┐
│ 2019-01-01 00:00:00.000 │ 2 │
└─────────────────────────┴──────────┘
不像 DateTime
, DateTime64
值不转换为 String
自动
3. 获取一个时区 DateTime64
-类型值:
SELECT toDateTime64(now(), 3, 'Europe/Moscow') AS column, toTypeName(column) AS x
┌──────────────────column─┬─x──────────────────────────────┐
│ 2019-10-16 04:12:04.000 │ DateTime64(3, 'Europe/Moscow') │
└─────────────────────────┴────────────────────────────────┘
4. 时区转换
SELECT
toDateTime64(timestamp, 3, 'Europe/London') as lon_time,
toDateTime64(timestamp, 3, 'Europe/Moscow') as mos_time
FROM dt
┌───────────────lon_time──┬────────────────mos_time─┐
│ 2019-01-01 00:00:00.000 │ 2019-01-01 03:00:00.000 │
│ 2018-12-31 21:00:00.000 │ 2019-01-01 00:00:00.000 │
└─────────────────────────┴─────────────────────────┘
允许存储时间instant间,可以表示为日历日期和一天中的时间,具有定义的亚秒精度刻度尺寸(精度):10-精度 秒语法:DateTime64(precision, [timezone])在内部,存储数据作为一些 ‘ticks’ 自纪元开始(1970-01-01 00:00:00UTC)作为Int64. 刻度分辨率由precision参数确定。 此外,该 DateTime64 类型可以存储时区是相同的整个列,影响如何的值 DateTime64 类型值以文本格式显示,以及如何解析指定为字符串
名称:MILLISECONDS2TIMESTAMP
功能:将1970-01-01 00:00:00以来的毫秒数转换为对应的timestamp时间类型,精确保留毫秒级精度!
参数:I_MILLISECONDS NUMBER 待转换的毫秒数
示例:select MILLISECONDS2TIMESTAMP(1397457489296) from dual;
SELECT TO_CHAR(MILLISECONDS2TIMESTAMP(1551804255181),
'yyyy-mm-dd hh24:mi:ss.ff3')
FROM DUAL;
Date and Time with subsecond resolution.
DateTime64(3) — milliseconds.
DateTime64(6) — microseconds.
时间范围:1970–2106.
由于暂时不知道clickhouse如何生成微妙和毫秒 使用mysql查询:
mysql> select
ClickHouse提供了许多数据类型,它们可以划分为基础类型、复合类型和特殊类型。我们可以在system.data_type_families表中检查数据类型名称以及是否区分大小写。
SELECT * FROM system.data_type_families
上面的系统表,存储了ClickHouse所支持的数据类型,注意不同版本的ClickHouse可能数据类型会有所不同,具体如下表所示:
┌─name────────────────────┬─case_insensitive─┬─alias_to
clickhouse的DateTime DateTime32通常情况只能精确到秒存储,如果我们需要存储毫秒纳秒,需要DateTime64数据库字段定义毫秒
使用新版jdbc 0.3.2+以上
驱动类更改为
对应java字段毫秒存储 Date LocalDateTime纳秒存储 LocalDateTime......
now() // 2020-04-01 17:25:40 取当前时间
toYear() // 2020 取日期中的年份
toMonth() // 4 取日期中的月份
today() // 20...
Clickhouse的数据类型
clickhouse作为分析型数据库,clickhouse提供了许多数据类型,它们可以划分为基础类型、复合类型和特殊类型。
基础类型只有数值、字符串和时间3中类型
Int:Int8,Int16,Int32和Int64
Uint:Uint8,Uint16,Uint32,Uint64
Float:Float32 (有效精度7位),Float64(有效精度16),clickhouse的浮点数支持正无穷、负无穷以及非数字的表达方式
Decimal Decimal
clickhouse有数值类型(整形,浮点数,定点数),字符串类型,日期时间类型,还有一些特别的数据类型。
没有Boolean类型,但是可以用整形的0和1替代。使用UInt即可。
0.支持的数据类型:
:) select * from system.data_type_families ;
┌─name────────────────────┬─case_insensitive─┬─alias_to────┐
│ IPv6 │ ...
ClickHouse提供了许多数据类型,它们可以划分为基础类型、复合类型和特殊类型。我们可以在system.data_type_families表中检查数据类型名称以及是否区分大小写。这个表中存储了ClickHouse支持的所有数据类型。
下面介绍下常用的数据类型,ClickHouse与Mysql、Hive中常用数据类型的对比图如下:
1.Int
ClickHouse中整形分为Int8、Int16、Int32、Int64来表示整数不同的取值范围,其末尾数字正好代表占用字节的大小(8位=1字节),整形又包含
java springboot调用海康SDK(初始化、获取通道列表,获取文件列表,根据文件下载文件,根据时间下载文件,用ffmpeg转封装ps流录像文件)
XiXi De Gua:
java springboot调用海康SDK(初始化、获取通道列表,获取文件列表,根据文件下载文件,根据时间下载文件,用ffmpeg转封装ps流录像文件)
当时明月i:
通过海康SDK预览获取回调的PS流数据自己解析然后前端播放
weixin_42005600:
java springboot调用海康SDK(初始化、获取通道列表,获取文件列表,根据文件下载文件,根据时间下载文件,用ffmpeg转封装ps流录像文件)
qq_41503984: