我有一个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源代码不是开源的。
答案 0 :(得分:0)
如果您查看该正则表达式,就会发现它正在寻找格式为YYYY-MM-DD HH:mm:SS.SSS
的ISO8601时间戳-换句话说,它需要十进制秒,而您只需要提供整秒即可。
一个简单的解决方法是通过在相关列中附加'.000'
来更新该列中的每个现有值,并更新插入例程以进行相同操作。
如果您引用sqlite date time functions,则有一个%f
的{{1}}格式说明符,可用于产生小数秒,如果您直接构建时间戳,这可能会有所帮助在插入查询中。
在数据库中,有问题的列的数据类型为datetime
Sqlite3没有strftime()
类型。您要存储的时间戳是字符串。 More information。