在我的数据库中,我有一个列类型: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重命名为其他名称。

10-04 23:30