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_DATE
和CREATION_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的单元测试创建表的主要内容,如果未能解决你的问题,请参考以下文章