Mysql 如何确保将日期的毫秒存储在数据库中?

Mysql 如何确保将日期的毫秒存储在数据库中?,mysql,grails-2.2,Mysql,Grails 2.2,我在mysql中使用Grails2.2 我以unix时间戳的形式获取时间 def raceStartTime = params.raceStart //milliseconds epoch time 然后,我将时间转换为日期,如下所示 Date startDateTime = new Date(raceStartTime.toLong()) 并将其保存在数据库中 Race r = new Race() r.start = startDateTime r.save() 结果表明,在mysq

我在mysql中使用Grails2.2

我以unix时间戳的形式获取时间

def raceStartTime = params.raceStart //milliseconds epoch time
然后,我将时间转换为日期,如下所示

Date startDateTime = new Date(raceStartTime.toLong())
并将其保存在数据库中

Race r = new Race()
r.start = startDateTime 
r.save()
结果表明,在mysql数据库中保存日期时,精度会丢失,即没有记录毫秒的精确值。它似乎将时间记录为hh-mm-ss。我需要保留秒的小数部分。是否有一种方法可以使时间戳转换日期保存时,分数秒部分不会丢失?谢谢你的帮助

更新:

我使用下面的映射块来更改数据类型

static mapping = {
    debug type: 'text'
    raceStart sqlType:  'DATETIME(6)'
    raceEnd sqlType:  'DATETIME(6)'
}

在此之后,我运行dbm gorm diff,但它不会生成更改日志。谢谢你的指导,谢谢

这与您如何在MySQL中定义
start
列有关。 发件人:

MySQL
时间
日期时间
时间戳
值具有分数秒支持,精度高达微秒(6位)

要定义包含小数秒部分的列,请使用语法type\u name(fsp),其中
type\u name
TIME
DATETIME
TIMESTAMP
,而
fsp
是小数秒精度。例如:

创建表t1(t时间(3),dt日期时间(6))

fsp
值(如果给定)必须在0到6之间。值为0表示没有小数部分如果省略,默认精度为0。(为了与以前的MySQL版本兼容,这与标准SQL默认值6不同。)

因此,请确保使用以下内容创建表:

 CREATE TABLE race (... start DATETIME(6) ...)

edit:我不是grails专家,但我认为您可以通过在
Race
类中定义以下内容来配置此映射:

static mapping = {
   start sqlType: "DATETIME", precision: 6
}

非常感谢。你能给出grails的解决方案吗?我认为这可以通过映射块来实现,但我不知道要用什么值来改变精度。谢谢