格式化HSQLDB的默认日期和时间

时间:2018-03-13 23:24:26

标签: sql hsqldb

我一直在尝试在CREATE命令中格式化日期和时间(以申请用户未输入任何日期/时间值的情况)。根据手册,有TO_DATE和TO_TIMESTAMP格式元素。如何修复我的SQL语句?

http://hsqldb.org/doc/guide/builtinfunctions-chapt.html#N142F5

CREATE TABLE test1( 
        Id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,

"Date In" DATE DEFAULT TO_TIMESTAMP(CURRENT_DATE, 'DD/MM/YYYY'),

"Time In" TIME DEFAULT TO_TIMESTAMP(CURRENT_TIME,'HH:MM')

);

我尝试使用TO_CHAR但仍然返回错误。

https://wiki.documentfoundation.org/Faq/Base/HSQLFunctions

enter image description here

1 个答案:

答案 0 :(得分:2)

DATE,TIMESTAMP或TIME值没有"格式"。它们以二进制方式存储,并在显示时进行格式化。因此,您无法应用"格式"到DATE列。此外,在一个日期值上调用to_timestamp()是没有意义的。 to_timestamp()用于将字符串(字符)值转换为日期(或时间戳)。

只需定义两列而不(错误地)将字符串转换应用于时间戳:

CREATE TABLE test1( 
    Id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    "Date In" DATE DEFAULT CURRENT_DATE,
    "Time In" TIME DEFAULT CURRENT_TIME
);

鉴于这两列的名称,我认为将它存储在一个timestamp列中会更有意义:

CREATE TABLE test1( 
    Id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    "Date Time In" TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);