Groovy Sql 和 SimpleDateFormat 帮助

发布于 2024-08-21 20:13:55 字数 1163 浏览 8 评论 0原文

在我的数据库中,我有一个列类型:日期时间。
列数据示例: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}") 的替代方法?

In my database, I have a column type : datetime.
Column data example : 2009-02-03 19:04:23.0

I'm using : SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S"); to define my date format.

I'm using groovySQL to read tables and for each rows, I'm adding a new SampleJ object (mapped to a new table - SampleJ).

Here my closure :

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()
            }
    }

When I check, my temporary table "SampleJ", all my date does not match with "${it.date_created}".
All dates are set to "new Date()" (to closure execution time).

Via debugger :
"${it.date_created}" is define as "Tue Feb 03 19:04:23 CST 2009", corresponding to (2009-02-03 19:04:23.0). I should have this date !

How can I fix this issue ? I have no error, just wrong dates.
Is there an easy way to define my dates in SampleJ ?
An alternative to addSample.dateCreated = dateFormat.parse("${it.date_created}") ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

北城孤痞 2024-08-28 20:13:55

按照惯例,Grails 会将 date_created 设置为当前时间,您需要添加

static mapping = {
        autoTimestamp false
    }

到 SampleJ。

或者,将 dateCreated 重命名为其他名称。

Grails will be setting date_created to the current time by convention, you need to add

static mapping = {
        autoTimestamp false
    }

to SampleJ.

Alternatively, rename dateCreated to something else.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文