如何在liquibase中设置当月和下个月的第一天的默认值?

问题描述

我可以使用下面的liquibase yaml创建分区。

有没有一种方法可以动态传递liquibase中的日期范围?在liquibase中,我们可以通过liquibase的属性标签传递当前时间戳,但是如何通过liquibase属性或changelog参数传递当月的第一日期和下个月的日期。

databaseChangeLog:
  - property:
      dbms: postgresql
      name: Now
      value:  CURRENT_DATE
    - changeSet:
          id: 1
          author: roran
          changes:
            - createTable:
                tableName: account_balance
                columns:
                  - column:
                      name: id
                      type: bigint
                      autoIncrement: true
                      constraints:
                        primaryKey: true
                  - column:
                      name: account_id
                      type: bigint
                      constraints:
                        nullable: false
                  - column:
                      name: balance_date
                      type: date
                      constraints:
                        primaryKey: true
                  - column:
                      name: create_date
                      type: timestamptz
                  - column:
                      name: created_by
                      type: varchar(100)
                  - column:
                      name: update_date
                      type: timestamptz
                  - column:
                      name: updated_by
                      type: varchar(100)
            - modifysql:
                applyToRollback: false
                dbms: postgresql
                append:
                  value: PARTITION BY RANGE (balance_date); CREATE TABLE public.account_balance_p0 PARTITION OF
                  account_balance FOR VALUES FROM ('2020-08-01 00:00:00') TO ('2020-10-01 00:00:00');

解决方法

如果您尝试将第一个和最后一个日期设为参数,则可以使用Liquibiase Changelog Substitution 然后对您的变更集进行以下更改:

        - modifySql:
            applyToRollback: false
            dbms: postgresql
            append:
              value: PARTITION BY RANGE (balance_date); CREATE TABLE public.account_balance_p0 PARTITION OF
              account_balance FOR VALUES FROM ('${start.date}') TO ('${end.date}');

您可以通过以下方式致电Liquibase以传递日期:

liquibase -Dstart.date=<property.value> -Dend.date=<property.value> update

HTH,

罗纳克