【问题标题】:How do I set a full date & time sql using java, and not just the date?如何使用 java 设置完整的日期和时间 sql,而不仅仅是日期?
【发布时间】: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();

【问题讨论】:

    标签: java mysql datetime jdbc prepared-statement


    【解决方案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 是仅限日期的,无论它存储在哪个列中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-25
        • 2018-06-18
        • 2020-07-31
        相关资源
        最近更新 更多