SQLite数据库中Grails域类中无法解析的日期

时间:2018-07-06 17:32:45

标签: sqlite datetime grails

我有一个sqlite数据库(它是spiceworks数据库),并且我正在将表映射到grails域类。特别是有一个日期时间格式的表(yyyy-MM-dd HH:mm:ss)。对于想要验证的任何人来说,这样的日期在数据库中的示例将是:2015-06-26 15:32:39

我创建了域类并将我的属性映射到列。让grails生成视图,使它们成为默认视图。当我尝试进入索引页面时,我得到:

URI
/spiceworks/weeklyReportItem
Class
java.text.ParseException
Message
Unparseable date: "2015-06-26 15:32:39" does not match (\p{Nd}++)\Q-\E(\p{Nd}++)\Q-\E(\p{Nd}++)\Q \E(\p{Nd}++)\Q:\E(\p{Nd}++)\Q:\E(\p{Nd}++)\Q.\E(\p{Nd}++)

我过去使用过MSSQL日期时间,但从未遇到过此问题。在数据库中,有问题的列的数据类型为datetime。有人知道怎么回事吗?

编辑:我只对数据库具有读取权限,而spiceworks源代码不是开源的。

1 个答案:

答案 0 :(得分:0)

如果您查看该正则表达式,就会发现它正在寻找格式为YYYY-MM-DD HH:mm:SS.SSS的ISO8601时间戳-换句话说,它需要十进制秒,而您只需要提供整秒即可。

一个简单的解决方法是通过在相关列中附加'.000'来更新该列中的每个现有值,并更新插入例程以进行相同操作。

如果您引用sqlite date time functions,则有一个%f的{​​{1}}格式说明符,可用于产生小数秒,如果您直接构建时间戳,这可能会有所帮助在插入查询中。

  

在数据库中,有问题的列的数据类型为datetime

Sqlite3没有strftime()类型。您要存储的时间戳是字符串。 More information