如何使用 java 设置完整的日期和时间 sql,而不仅仅是日期?

Posted

技术标签:

【中文标题】如何使用 java 设置完整的日期和时间 sql,而不仅仅是日期?【英文标题】:How do I set a full date & time sql using java, and not just the date? 【发布时间】:2011-04-10 07:23:18 【问题描述】:

我正在尝试使用 java 在我的数据库中设置时间戳,但是在我的表中,我得到的只是日期,没有时间(即,看起来像“2010-09-09 00:00:00”)。

我在我的 mysql 数据库上使用了一个日期时间字段(因为它是 appears 那个 datetime is more common than timestamp)。我设置日期的代码如下所示:

PreparedStatement ps = conn.prepareStatement("INSERT INTO mytable (datetime_field) VALUES (?)")
java.util.Date today = new java.util.Date();
java.sql.Date timestamp = new java.sql.Date(today.getTime());
ps.setDate(1, timestamp);
ps.executeUpdate();

如何设置日期以包含时间?

编辑:我按如下更改了代码,它设置了日期和时间。

PreparedStatement ps = conn.prepareStatement("INSERT INTO mytable (datetime_field) VALUES (?)")
java.util.Date today = new java.util.Date();
java.sql.Timestamp timestamp = new java.sql.Timestamp(today.getTime());
ps.setTimestamp(1, timestamp);
ps.executeUpdate();

【问题讨论】:

【参考方案1】:

你可以使用:

private static String getTimeStamp() 
    SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    return f.format(new Date()); 

【讨论】:

在将日期/时间保存到数据库或从数据库中读取它们时,不应处理它们的字符串格式。诸如 setTimestampgetTimestamp 之类的 JDBC 抽象是为了避免这种情况。【参考方案2】:

不完全确定您需要使用什么,但是

ps.setDate();

需要日期类型的列。所以它正在对其进行规范化,移除时间。

试试

ps.setTimetamp();

【讨论】:

【参考方案3】:

使用java.sql.TimestampsetTimestamp(int, Timestamp)java.sql.Date 是仅限日期的,无论它存储在哪个列中。

【讨论】:

以上是关于如何使用 java 设置完整的日期和时间 sql,而不仅仅是日期?的主要内容,如果未能解决你的问题,请参考以下文章

SQL 如何查询日期在一定范围内的数据

请问修改表中的某一个日期类型的字段为当前系统时间的sql语句该如何书写。

如何使用 SQL Server 中的日期时间数据设置日期时间本地输入值?

如何使用 PowerQuery 中的高级编辑器设置动态开始日期和结束日期

加密解密,MySQL单行函数,数学函数字符串日期时间,流程控制,完整详细可收藏查询SQL

如何获得每天包含多个列的事件的第一个实例,包括日期时间并返回这些列加上完整的日期时间值?