seleccionar nacimiento insertar hora formulario fecha ejemplo desde actual liquibase

liquibase - nacimiento - seleccionar fecha en html



liquibase<inserciĆ³n>: Insertar fecha actual (7)

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


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


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>


Las respuestas publicadas por Ramya y Adam D, también funcionan para PostgreSQL.

Usando la etiqueta "propiedad", tuve que cambiar los dbms a dbms="postgresql" y usar una función PostgreSQL para "valor" ( CURRENT_TIMESTAMP en mi caso).

Sin la etiqueta "propiedad", usé valueDate="CURRENT_TIMESTAMP" en la etiqueta "columna".

Estoy usando PostgreSQL 9.1.9 y Liquibase 2.0.5.


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>


Si está utilizando DB2, entonces podría hacer lo siguiente:

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

El SQL resultante no se cita, por lo que simplemente llama a la función de DB2.


Liquibase + Oracle: use valueComputed = "SYSDATE"

Trabajó con Oracle 11g:

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