首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Liquibase:如何将日期列的默认值设置为UTC格式的"now“?

Liquibase:如何将日期列的默认值设置为UTC格式的"now“?
EN

Stack Overflow用户
提问于 2014-05-09 02:53:22
回答 7查看 57.3K关注 0票数 43

如何将日期列的默认值设置为UTC格式的"now“?我认为答案与column element上的defaultValueComputed属性有关。

文档说明:

defaultValueComputed从函数或过程调用返回的值。此属性将包含要调用的函数。

引用的函数应该是用什么语言编写的?Java?该函数是否应该是我想要使用的数据库供应商-specific日期函数?关于这个主题,我还可以阅读更多的文档吗?

EN

回答 7

Stack Overflow用户

发布于 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>

(摘自论坛帖子。)

票数 43
EN

Stack Overflow用户

发布于 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)读取。

票数 7
EN

Stack Overflow用户

发布于 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>
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23550232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档