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