HSQLDB为sqlserver的单元测试创​​建表

Posted

技术标签:

【中文标题】HSQLDB为sqlserver的单元测试创​​建表【英文标题】:HSQLDB creating table for unit test for sqlserver 【发布时间】:2020-09-03 12:23:25 【问题描述】:

我正在使用 hsqldb 为我的 sqlserver 单元测试创​​建表。这是我的语法:

SET DATABASE SQL SYNTAX MSS TRUE;

DROP TABLE MY_STUDIES IF EXISTS;
CREATE TABLE MY_STUDIES
(
STUDY_ID INT,
IB_ID INT NOT NULL,
STUDY_DATE DATE,
CREATION_DATE DATE,
STUDY_UID VARCHAR(200),
PRIMARY KEY (STUDY_ID)
);

除了STUDY_DATECREATION_DATE 之外,一切都运行良好。 DATE 这里的格式好吗?这里的sqlserver还有其他DATE类型吗?

【问题讨论】:

你看过文档了吗? Data types (Transact-SQL) DATE、TIME、DATETIME2 和 DATETIMEOFFSET 是实际的数据类型。由于边缘效应和缺乏精度,不推荐使用 DATETIME 和 SMALLDATETIME。 phauer.com/2017/dont-use-in-memory-databases-tests-h2 【参考方案1】:

SQL Server documentation 说如下:

使用 time、date、datetime2 和 datetimeoffset 数据类型来新建 工作。这些类型符合 SQL 标准。它们更便携。 time、datetime2 和 datetimeoffset 提供更高的秒精度。 datetimeoffset 为全局部署提供时区支持 应用程序。

SQL 标准类型是 TIME、DATE、TIMESTAMP 和 TIMESTAMP WITH TIME ZONE。 Microsoft 使用 DATETIME2 和 DATETIMEOFFSET 作为 TIMESTAMP (WITH TIME ZONE) 的别名。

您在表定义中使用 DATE 似乎没问题。根据 SQL 标准,DATE 表示为 YYYY-MM-DD 字符串。

【讨论】:

以上是关于HSQLDB为sqlserver的单元测试创​​建表的主要内容,如果未能解决你的问题,请参考以下文章

无法从应用程序使用 hsqldb 连接,但单元测试工作

分发一个hsqldb数据库以供使用

怎么使用hsqldb 和 mybatis 构造单元测试

在 HSQLDB 中截断模式

HSQLDB 内存设置的 HSQLDB 约束违规和 SQL 查询日志

Hibernate 看不到 HSQLDB 中创建的表