hsqldb 中时间戳大小的奇怪行为

Posted

技术标签:

【中文标题】hsqldb 中时间戳大小的奇怪行为【英文标题】:Weird behavior of timestamp size in hsqldb 【发布时间】:2013-06-19 12:36:28 【问题描述】:

我有示例 ddl 脚本:

CREATE TABLE PERSON
(
  ID BIGINT GENERATED BY DEFAULT AS IDENTITY NOT NULL
, FIRST_NAME VARCHAR(100) NOT NULL 
, LAST_NAME VARCHAR(100) NOT NULL 
, DATE_OF_BIRTH DATE
, GENDER VARCHAR(1) NOT NULL
, SSN VARCHAR(100)
, LAST_LOGIN TIMESTAMP
, VERSION INT DEFAULT 0 NOT NULL
);

当我在 db visualiser 中打开这个数据库时,我看到 timestamp 的大小为 26 。我真的不知道为什么,因为我读到的默认值为 6。所以我想更改它,例如:

, LAST_LOGIN TIMESTAMP(1)

现在是 21 号。这真的很奇怪。可能是最后一个整数的平均大小,但第一个数字“2”是什么意思?

【问题讨论】:

【参考方案1】:

你所说的“大小”是时间戳的亚秒级精度,默认为 6。您的 TIMESTAMP(1) 示例定义了一个亚秒精度为 1 的时间戳。

您在 DB Visualiser 中看到的数字是 TIMESTAMP 列的显示大小。

TIMESTAMP(1),例如“2013-06-19 01:01:01.1”,总是用 21 个字符表示。定义为 TIMESTAMP 或 TIMESTAMP(6) 的时间戳显示在末尾多了五位数字。

【讨论】:

以上是关于hsqldb 中时间戳大小的奇怪行为的主要内容,如果未能解决你的问题,请参考以下文章

计算一列中时间戳之间的持续时间

数组中时间戳之间的平均间隔

Mysql查询将返回数据库中时间戳之间的空闲槽

计算 BigQuery 中时间戳之间的平均延迟

如何使用 SQL 显示两个不同区域中时间戳之间的实时差异?

如何计算 Mongoose/NodeJS 中时间戳字段中的不同日期项?