2014-10-06 82 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" 
    } 
}