数据库中的时间戳与文本文件中的时间戳具有不同的格式

时间:2014-07-23 08:03:57

标签: java mysql sql format timestamp

我将我的应用程序中的当前时间保存为MYSQL数据库作为时间戳,作为备份,我将日期保存到文本文件中。但是,时间格式的格式不一样,我希望它们是相同的,因为我需要比较它们。

数据库正在使用日期时间类型,时间戳格式为" 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())

如何才能使格式相同,以便比较时间戳?

顺便说一句,我不需要毫秒精度,我只想要格式相同。

2 个答案:

答案 0 :(得分: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版本兼容。)

答案 1 :(得分:0)

您可以使用以下内容将日期格式化为数据库格式:

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

那应该解决你的问题