如何通过XML配置将SQL表字段默认值设为仅今日日期(不含时间)
修改方案
调整字段类型和默认值函数两处配置即可实现需求,修改后的完整代码如下:
<property name="today" value="CURDATE()" dbms="mysql"/> <changeSet author="Trey Collier" id="SCHEJ-376"> <addColumn tableName="schedule"> <column name="dateLastPublished" type="DATE" defaultValueDate="${today}"> <constraints nullable="false" /> </column> </addColumn> </changeSet>
调整说明
- 将原配置中的
now()替换为MySQL的CURDATE()函数,该函数仅返回当前日期,格式为YYYY-MM-DD,无时分秒内容。也可替换为DATE(NOW()),二者功能完全一致。 - 将字段类型从
DATETIME修改为DATE,MySQL的DATE类型专门用于存储不带时间的日期值,底层不会存储时分秒信息,从存储层面避免多余时间内容出现。
注意:如果原变更集已经在你的环境中执行过,不要直接修改原有变更集内容,需要新增一个独立的变更集来修改字段类型和默认值,避免触发Liquibase的变更集校验错误。
内容的提问来源于stack exchange,提问作者TreyBCollier
相关产品推荐
相关产品推荐

