【发布时间】:2014-07-23 08:03:56
【问题描述】:
我将应用程序中的当前时间作为时间戳保存到 MYSQL 数据库中,作为备份,我会将日期保存到文本文件中。但是,时间戳的格式不一样,我希望它们相同,因为我需要 abel 来比较它们。
数据库使用日期时间类型,时间戳格式为“2014-07-23 09:50:14”
在文本文件中,时间戳格式为“2014-07-23 09:51:25.877”
我正在使用准备好的语句来保存到数据库。
preparedStatement.setTimestamp(2, new Timestamp(new Date().getTime()));
我正在使用 BufferedWriter 保存到文本文件。
bufferedWriter.write(new Timestamp(new Date().getTime())
如何使格式相同,以便比较时间戳?
顺便说一句,我不需要毫秒精度,我只希望格式相同。
【问题讨论】:
-
当您将时间戳保存到数据库时,它会将时间戳保存在其 TIMESTAMP 数据类型中。您看到
2014-07-23 09:50:14的演示文稿是因为您用于查看数据的工具。数据库中的实际值也保存了毫秒部分。要对此进行测试,请尝试运行SELECT查询并在 Java 中构建 Timestamp 对象。将其与从文本文件构建的 Timestamp 对象进行比较。如果还是不行,就贴出完整代码。 -
@Pat 你说得对。然而,当我使用查询从数据库中获取时间戳时,PMA 似乎隐藏了毫秒部分。毫秒部分始终为 0,例如 2014-07-23 10:23:12.0。
-
你在使用 MySQL 时运气不佳。检查这篇文章stackoverflow.com/questions/2572209/…。好像mySQL不支持毫秒!我不知道。嗯,我猜,今天学到了一些东西——永远不要使用 MySQL 数据库:)
-
@Pat 我不需要毫秒精度,我只需要数据库和文本文件中的格式相同。
-
如果您不需要毫秒,则在将时间戳写入文本文件时截断时间戳(使用 SimpleDateFormat)。例如
SimpleDateFormat noMilliSecondsFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println(noMilliSecondsFormatter.format(timestamp));
标签: java mysql sql format timestamp