sql Alter table:基于2列之间的datediff创建列

Posted

技术标签:

【中文标题】sql Alter table:基于2列之间的datediff创建列【英文标题】:sql Alter table: create a column base on datediff between 2 columns 【发布时间】:2017-08-26 13:51:45 【问题描述】:

我想在 2 个现有列(date1 和 date2)之间创建一个基于 datediff 函数的计算列。 (天)

date1 和 date2 是 sql DATE 类型。

我没有成功的尝试:

     ALTER TABLE my_table ADD lenght AS datediff('dd', date1, date2)

感谢您的帮助。

【问题讨论】:

【参考方案1】:

当 GENERATED 列在其他列中引用的值发生更改时,它会自动更新。正确的语法是:

ALTER TABLE my_table ADD length INT GENERATED ALWAYS AS (DATEDIFF('day', date1, date2))

【讨论】:

很好,但不适用于 HSQLDB 看起来您使用的是旧版本的 HSQLDB。我检查了我的答案并更正了它,因为我发现它需要括号,现在它在 HSQLDB 2.3x 及更高版本中工作正常。 是的,我正在使用 LibreOffice 您可以尝试新的 HSQLDB 版本作为 LibreOffice 中的外部数据库。见user.services.openoffice.org/en/forum/… @fredt 如果我想要当前日期和日期列之间的日期差异,如何解决这个问题【参考方案2】:
ALTER TABLE my_table ADD lenght AS int;

UPDATE my_table SET lenght = DateDiff('dd', date1, date2);

-- Don't forget to add a trigger that fires on updated and inserted rows that will keep the value of lenght valid if the date1 or date2 changes

【讨论】:

对我来说:ALTER TABLE my_table ADD lenght int;

以上是关于sql Alter table:基于2列之间的datediff创建列的主要内容,如果未能解决你的问题,请参考以下文章

sql [ALTER TABLE]要(1)添加,删除或修改列,或(2)在现有表中添加和删除各种约束。 #Syntax #Alter_table

sql [ALTER TABLE ADD COLUMN]将新列添加到现有表#SQL

SQL ALTER TABLE MODIFY 语句

SQL ALTER TABLE 语句

sql

SQL-W3School-高级:SQL ALTER TABLE 语句