liquibase - seleccionar - timestamp mysql ejemplo




liquibase<inserción>: Insertar fecha actual (5)

Gracias por su respuesta. fue de ayuda A continuación es lo que hice y funcionó para mí.

<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>

Gracias de nuevo, Ramya

Estoy tratando de insertar datos usando la etiqueta insert de liquibase. Funciona bien cuando estoy ingresando un número a la etiqueta de valor. Pero estoy buscando una función simple que se ocupará de la fecha predeterminada (DateTime actual de la base de datos) incluso cuando no la tengo como parte de mi definición de tabla.

P.ej:

<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>

aquí <column name="create_date" value ="1328055111692"/> funciona bien y se inserta en la base de datos. También intenté usar <defaultValueDate> y <valueDate> pero también necesitan una entrada de fecha en el formato especificado.

Estoy buscando alguna función como currentDateTimeFunction que se convertiría a UNIX_TIMESTAMP () o SYSDATE o ahora () según el tipo de base de datos que estoy usando. Por favor, ayúdame.

Gracias ramya


Hay una forma simple de hacerlo dado a continuación.

simplemente puede usar valueDate = "now ()" para MySQL. Como en mi caso lo hice:

    <insert tableName="SOMETABLE">
        <column name="ID" valueComputed="SOMETABLE_SEQ.NEXTVAL" />
        <column name="USER_ID" value="123" />
        <column name="CREATED_DATE" valueComputed="SYSDATE" />      
    </insert>

Lo que tendrá que hacer es usar los parámetros de registro de cambios y definir un parámetro "ahora" o "marca de hora actual" que se reemplaza por tipo de base de datos.

En la parte superior de su <databaseChangeLog> , normalmente justo fuera de su <changeset> , agregue definiciones por base de datos de la propiedad como:

  <property name="now" value="sysdate" dbms="oracle"/>
  <property name="now" value="now()" dbms="mysql"/>
  <property name="now" value="now()" dbms="postgresql"/>

entonces en su conjunto de cambios use

<column name="Join_date" defaultValueFunction="${now}"/>

Observe el uso de defaultValueFunction que le permitirá a liquibase no analizarlo como una fecha o citarlo.


Puede usar valueNumeric para ejecutar funciones, ya que evitará el ajuste de comillas alrededor del valor.

    <changeSet id="emp_1" author="Me">
       <insert tableName="Emp" schemaName="XYZ">
         <column name="last_updated_at" valueDate="now()"></column>
       </insert>
    </changeset>

Liquibase + Oracle: use valueComputed = "SYSDATE"

Trabajó con Oracle 11g:

<column name="id" valueNumeric="uuid_generate_v4()"></column>