在我的结构中,我有一个这样的字段:
type model struct {
gorm.Model
Time *time.Time `gorm:"type:time"`
}
事实证明,从我所看到的,GORM 使用 Go 本身的time
类型,而不是数据库的time
类型,这是我的意图。
这将使用Debug()
函数生成以下 sql:
CREATE TABLE `models` (`time` datetime(3) NULL)
而不是:
CREATE TABLE `models` (`time` time NULL)
我所期望的就是想要。
如何让它工作?
即使阅读文档和其他论坛,我所尝试的一切都是无用的。
1条答案
按热度按时间eyh26e7m1#
这是
GORM
数据库类型Map的默认行为。在
GORM
中,type:"time"
中的time
被视为一个关键字,用于将默认数据库列类型设置为mysql的datetime
或postgresql的timestamptz
。图式
time
的解决方案**您可以使用GORM提供的customisation方法。
GORM将从标签类型读取列的数据库
type
,如果没有找到,将检查结构是否实现接口GormDBDataTypeInterface
或GormDataTypeInterface
,并将其结果用作数据类型下面是代码片段