2014-10-06 80 views
3

我有一个在MySQL中存储数据的grails域。如何捕获grails域中的毫秒数

其中我有一个Date属性,它在DB中创建DateTime字段。但是,除了日期之外,我还希望捕获毫秒。

有没有办法捕捉毫秒?

例子:

Class MyClass { 

    Date dateCreated 

} 

在MySQL存储数据的2014-10-06 16:21:57但我想捕捉毫秒为好。

+0

我想捕捉毫秒MySQL的时候,我需要运行查询确定创建请求的确切时间.. – Anthony 2014-10-06 17:11:32

+0

mysql支持这个,例如如果您手动创建表格,则可以创建一个类型为datetime(3)的列。我也在寻找一种方法来让grails为我做这件事 – 2015-02-06 19:48:49

回答

2

通过定义对象的小数点数量,MySQL 5.6.4及更高版本可以在日期时间对象的数据库中保存毫秒。 (在这里阅读更多:MySQL reference manual)。默认情况下,Grails/Gorm不会这样做。幸运的是,通过在域中定义sqlType可以轻松解决此问题,如下所示:

class ExampleDomain { 
    Date date 

    static mapping = { 
     date sqlType: 'datetime(3)' 
    } 
} 
+0

sqlType:'datetime(3)'无效:“您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册正确的语法使用附近'(3)...“ – Mexx 2016-05-11 11:11:00

+0

@Mexx你运行MySql版本? – ascu 2016-05-11 11:42:04

+0

MySQL版本是5.5.42。哦,现在我发现它已经老了。我现在使用bigint(20)。节省纳秒至unix时代。 – Mexx 2016-05-18 07:45:04

0

您可以使用bigint(20)。你的Groovy/Grails领域可能看起来像,如果要存储,因为自动Unix纪元纳秒时,例如将被保存:

class myClass { 

    Integer id 
    Long timestamp = System.nanoTime() 

    static mapping = { 
    timestamp sqlType: "bigint" 
    } 
}