gpt4 book ai didi

java - HSQLDB 2.4 如何使用 UNIX_MILLIS() 作为 BIGINT 列的默认值

转载 作者:行者123 更新时间:2023-12-02 09:00:39 25 4
gpt4 key购买 nike

我运行下一个 SQL (JDBC)

CREATE TABLE IF NOT EXISTS PUBLIC.MY_DATA(
ID BIGINT IDENTITY PRIMARY KEY NOT NULL,
...,
LAST_MODIFIED BIGINT DEFAULT UNIX_MILLIS() NOT NULL)

并获取 SQLSyntaxErrorException:意外标记:UNIX_MILLIS

但是根据documentation

UNIX_MILLIS ( [ ] )

This function returns a BIGINT value. With no parameter, it returns the number of milliseconds since 1970-01-01. With a DATE or TIMESTAMP parameter, it converts the argument into number of milliseconds since 1970-01-01. (HyperSQL)

感谢任何帮助

最佳答案

查看 DEFAULT 的定义子句(在 table creation 中),并且其中允许的内容仅限于

<default option> ::= <literal> | <datetime value function> | USER
| CURRENT_USER | CURRENT_ROLE | SESSION_USER | SYSTEM_USER |
CURRENT_CATALOG | CURRENT_SCHEMA | CURRENT_PATH | NULL

<datetime value function>定义为

datetime value function

<datetime value function> ::= ... 

Specify a function that returns a datetime value. The supported datetime value functions are listed and described in the Built In Functions chapter.

UNIX_MILLIS不返回日期时间值,而是返回 BIGINT ,完全有可能UNIX_MILLIS不被视为<datetime value function> ,因此在 DEFAULT 中不可用条款。

这似乎可以通过查看 parser of the default clause 得到支持。 ,它根据结果类型过滤允许的表达式。

作为提示,我尚未对其进行测试,但启用 PostgreSQL 兼容模式可能允许您使用 DEFAULT UNIX_TIME()或者也许DEFAULT (UNIX_TIME()) .

关于java - HSQLDB 2.4 如何使用 UNIX_MILLIS() 作为 BIGINT 列的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60185738/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com