如何将日期列的默认值设置为UTC格式的"now“?我认为答案与column element上的defaultValueComputed
属性有关。
文档说明:
defaultValueComputed从函数或过程调用返回的值。此属性将包含要调用的函数。
引用的函数应该是用什么语言编写的?Java?该函数是否应该是我想要使用的数据库供应商-specific日期函数?关于这个主题,我还可以阅读更多的文档吗?
发布于 2014-05-09 18:34:20
也许liquibase论坛中的this topic会有所帮助?
我认为defaultValueComputed
会用一个数据库特定的函数来表达“现在”。在mySQL中,它应该是CURRENT_TIMESTAMP
,所以它可能看起来像这样:
<createTable tableName="D_UserSession">
<column name="ts" type="TIMESTAMP" defaultValueComputed="CURRENT_TIMESTAMP"/>
</createTable>
(摘自论坛帖子。)
发布于 2017-10-29 22:57:04
在MySQL中,要使用像DATETIME(6)
(微秒精度)这样的带有小数秒的DATETIME列,请使用默认值NOW(6)
(注意:由于某种原因,使用liquibase 3.5.3时CURRENT_TIMESTAMP(6)
会产生错误):
<column name="created_at" type="DATETIME(6)" defaultValueComputed="NOW(6)" >
<constraints nullable="false" />
</column>
请注意,该值将在内部存储在UTC中,但使用服务器的时区设置(@@global.time_zone
、@@session.time_zone
)读取。
发布于 2021-08-26 13:54:45
这应该是:
<property name="now" value="now()" dbms="mysql,h2"/>
<property name="now" value="current_timestamp" dbms="postgresql"/>
<property name="now" value="sysdate" dbms="oracle"/>
<property name="now" value="getdate()" dbms="mssql"/>
<changeSet author="me" id="sample_usage_demo">
<addColumn schemaName= "dbo" tableName="demo_table" >
<column name="demo_column" type="datetime" defaultValueDate="${now}">
<constraints nullable="false" />
</column>
</addColumn>
</changeSet>
https://stackoverflow.com/questions/23550232
复制相似问题