【问题标题】:sql Alter table: create a column base on datediff between 2 columnssql Alter table:基于2列之间的datediff创建列
【发布时间】: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)

感谢您的帮助。

【问题讨论】:

    标签: sql hsqldb


    【解决方案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;
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-10
    • 2012-04-09
    • 2019-04-07
    • 2010-11-09
    • 2021-05-12
    相关资源
    最近更新 更多