【发布时间】:2014-08-27 01:33:39
【问题描述】:
我有一个带有 TIMESTAMP 类型的单个字段的 MySQL 表。 当我在表中插入时间戳时,它会被四舍五入。
例如 - 如果我做一个
insert into tablename (time) values ("2014-08-25 23:59:59.587");
然后我做一个
select * from tablename;
我明白了
2014-08-26 00:00:00
这导致我的代码中出现错误,我使用最后一条记录的时间戳来确定新一天的开始位置。
如何确保小数部分按原样存储? (或者如果它被正确存储,那么我如何检索它 - (使用 Java))
我正在使用 MySQL 5.6.16 和 Java 8 (虽然问题不需要java,可以从命令行验证)
使用 Java 时,
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Timestamp;
public class DBTest {
public static void main(String[] args) {
try {
Class.forName("com.mysql.jdbc.Driver");
Connection dbConn = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/demod?useUnicode=true&characterEncoding=utf8", "dawon","1111");
Statement stmt = dbConn.createStatement();
String sql = "SELECT TEST FROM TIME;";
ResultSet rs = stmt.executeQuery(sql);
rs.next();
Timestamp ts = rs.getTimestamp("TEST");
System.out.println("time" + ts.toString() + " " + rs.getTimestamp("TEST"));
//both print out the rounded off value
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
}
【问题讨论】:
标签: java mysql timestamp rounding