首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PreparedStatement将不带时间信息的java.util.Date和java.sql.Date设置到Mysql dateTime列中

问PreparedStatement将不带时间信息的java.util.Date和java.sql.Date设置到Mysql dateTime列中
EN

Stack Overflow用户
提问于 2012-10-16 23:38:03
回答 3查看 1.9K关注 0票数 2

为什么dateTime mysql列上java.sql.PreparedStatement#setDate总是得到像2012-10-16 00:00:00这样的日期格式,而没有时间信息?我在一个循环中存储日期,如下所示:

代码语言:javascript
复制
protected Date getIncrementedDateTime() {
    additionalTime += 1000;
    return new Date(System.currentTimeMillis() + additionalTime);
}


preparedStatement.setDate(j, new java.sql.Date(getIncrementedDateTime().getTime());

我调试了这些值,但是mysql数据库总是有2012-10-16 00:00:00的值。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-16 23:41:07

根据java.sql.Date的文档

JDBC微秒值的薄包装器,允许

将其标识为SQLDATE值。..。

为了符合SQL DATE的定义,java.sql.Date实例包装的毫秒值必须“标准化”,方法是在与该实例关联的特定时区中将小时、分钟、秒和毫秒设置为零。

基本上,对于datetime列,您可能应该使用不同的类型,例如Timestamp。(这在其他方面并不理想,但它可能更适合……)

票数 3
EN

Stack Overflow用户

发布于 2012-10-16 23:41:16

java.sql.Date只是一个日期--没有时间。不要将其与包含时间信息的java.util.Date混淆。你可能想看看java.sql.Timestamp。

票数 0
EN

Stack Overflow用户

发布于 2012-10-16 23:44:13

它基于表中列的数据类型。请尝试根据数据库服务器使用TimeStamp或Time。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12918385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档