在我的数据库中,我有一个列类型:datetime。
列数据示例:2009-02-03 19:04:23.0
我正在使用:SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");
定义我的日期格式。
我正在使用groovySQL来读取表,并为每一行添加一个新的SampleJ对象(映射到新表-SampleJ)。
这里我关闭:
def sampleQuery(int dataset) {
sqlModule.eachRow("""
select b.*
from dataset a, array_data b
where dataset_id = "${dataset}"
and a.array_data_id = b.array_data_id ;""")
{
def addSample= new SampleJ(it.toRowResult())
addSample.id = "${it.array_data_id}" as int
addSample.dateCreated = dateFormat.parse("${it.date_created}")
//addSample...(more columns)
addSample.save()
}
}
当我检查临时表“SampleJ”时,我所有的日期都与“$ {it.date_created}”不匹配。
所有日期都设置为“new Date()”(以关闭执行时间为准)。
通过调试器:
“$ {it.date_created}”被定义为“Tue Feb 03 19:04:23 CST 2009”,对应于(2009-02-03 19:04:23.0)。我应该有这个日期!
如何解决此问题?我没有错误,只是错误的日期。
有没有一种简单的方法可以在SampleJ中定义我的日期?
addSample.dateCreated = dateFormat.parse(“$ {it.date_created}”)的替代方法?
最佳答案
Grails将按照约定将date_created设置为当前时间,您需要添加
static mapping = {
autoTimestamp false
}
给SampleJ。
或者,将dateCreated重命名为其他名称。