【问题标题】:Timestamp in database has different format from timestamp in textfile数据库中的时间戳与文本文件中的时间戳格式不同
【发布时间】: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


【解决方案1】:

这是不同的,因为您创建 两个 时间戳相隔几秒钟。您应该创建一个时间戳并写入两个位置。

未经测试:

Timestamp stamp = new Timestamp(new Date().getTime());

preparedStatement.setTimestamp(2, stamp);

bufferedWriter.write(stamp)

要在 MySQL 中存储小数秒,请参阅 11.3.7 Fractional Seconds in Time Values:

MySQL 5.7 支持 TIME、DATETIME 和 TIMESTAMP 值的小数秒,精度高达微秒(6 位):

要定义包含小数秒部分的列,请使用语法 type_name(fsp),其中 type_name 是 TIME、DATETIME 或 TIMESTAMP,fsp 是小数秒精度。例如:

CREATE TABLE t1 (t TIME(3), dt DATETIME(6));

fsp 值(如果给定)必须在 0 到 6 的范围内。值 0 表示没有小数部分。如果省略,则默认精度为 0。(这与标准 SQL 默认值 6 不同,是为了与以前的 MySQL 版本兼容。)

【讨论】:

  • 因为我从不同时保存到数据库和文本文件,所以这不是问题。问题是文本文件和数据库中的格式不一样。不过,感谢您的宝贵时间。
  • @Chrippe 已使用 SQL 小数秒变通方法更新答案。
  • 谢谢,将MYSQL数据库更新到5.7。
【解决方案2】:

您可以使用以下方法在将日期插入数据库之前对其进行格式化:

SimpleDateFormat dt1 = new SimpleDateFormat("yyyyy-mm-dd hh:mm:ss");
dt1.format(date);

这应该可以解决您的问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-16
    • 1970-01-01
    • 1970-01-01
    • 2019-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多