liquibase <插入>:插入当前日期

Ram*_*mya 31 liquibase

我试图使用liquibase插入标记插入数据.当我输入一个数字到值标签时,它工作正常.但我正在寻找一个简单的函数来处理默认日期(数据库的当前DateTime),即使我没有将它作为我的表定义的一部分.

例如:

<changeSet id="abc_1" author="Me">
<insert tableName="Emp" schemaName="XYZ">
    <column name="name" value="Me"/>
    <column name="create_date" value ="1328055111692"/>
    <column name="profile_last_update" value="currentDateTimeFunction"/>
    <column name="group_name" value="BlahBlah"/>
</insert>
</changeSet>
Run Code Online (Sandbox Code Playgroud)

这里<column name="create_date" value ="1328055111692"/>工作正常,它插入到数据库中.我也试过使用<defaultValueDate>,<valueDate>但他们也需要一些指定格式的日期输入.

我正在寻找一些像currentDateTimeFunction这样的函数,它将根据我正在使用的数据库类型转换为UNIX_TIMESTAMP()或SYSDATE或now().请帮我.

谢谢你,Ramya

Nat*_*and 53

您需要做的是使用changelog参数并定义每个数据库类型替换的"now"或"current_timestamp"参数.

在您的顶部<databaseChangeLog>,通常在您的外部<changeset>,添加属性的每个数据库定义,如:

  <property name="now" value="sysdate" dbms="oracle"/>
  <property name="now" value="now()" dbms="mysql"/>
  <property name="now" value="now()" dbms="postgresql"/>
Run Code Online (Sandbox Code Playgroud)

然后在你的变更集中使用

<column name="Join_date" defaultValueFunction="${now}"/>
Run Code Online (Sandbox Code Playgroud)

注意使用defaultValueFunction,让liquibase知道不要将它解析为日期或引用它.

  • 没关系.正确的值是valueComputed (4认同)

Ram*_*mya 14

谢谢您的回复.这很有帮助.以下是我所做的,它对我有用.

<property name="now" value="UNIX_TIMESTAMP()" dbms="mysql"/>
<changeSet id="emp_1" author="Me">
<insert tableName="Emp" schemaName="XYZ">
    <column name="EmpName" value="abc"/>
    <column name="Join_date" valueDate="${now}"/>
    <column name="Profile_last_update" valueDate="${now}"/>
    <column name="group_name" value="BlahBlah"/>
</insert>
</changeSet>
Run Code Online (Sandbox Code Playgroud)

再次感谢,Ramya


小智 5

如果使用的是DB2,则可以执行以下操作:

<changeSet id="emp_1" author="Me">
<insert tableName="Emp" schemaName="XYZ">
    <column name="EmpName" value="abc"/>
    <column name="Join_date" valueDate="CURRENT TIMESTAMP"/>
    <column name="Profile_last_update" valueDate="CURRENT TIMESTAMP"/>
    <column name="group_name" value="BlahBlah"/>
</insert>
</changeset>
Run Code Online (Sandbox Code Playgroud)

结果SQL不加引号,因此仅调用DB2函数。