【问题标题】:How to store current Date and time in mysql如何在mysql中存储当前日期和时间
【发布时间】:2012-05-07 14:08:56
【问题描述】:

我有一个 java 程序,我使用 java.util.Date 来获取当前日期和时间,我在 mysql 中有一个表,其中有一个字段

ActivityTime date; // date is the type

我使用准备好的语句插入到表中。

java.util.Date today = new java.util.Date();
long t = today.getTime();

PreparedStatement ps = con.prepareStatement(
                "insert into UserActivity values (?, ?, ?, ?, ?, ?)");
....
ps.setDate(5, new java.sql.Date(t));
....

日期在输出中显示正确,但时间是 00:00:00 我不知道为什么会这样? 也请帮我取时间。 当我打印 java.util.date 时显示正确的时间。问题是如何将时间插入到 sql 表中。

PS:可能这很简单,但 java api 对我来说是新的

【问题讨论】:

  • 甚至这个http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/System.html#currentTimeMillis()

标签: java mysql database


【解决方案1】:

我建议使用 MySQL 日期时间字段类型,然后使用函数 NOW() 向其插入值。

你可以这样插入日期:

INSERT INTO `table-name`(`DATETIME-FIELD-NAME`) VALUES(NOW());

【讨论】:

    【解决方案2】:

    你可能需要java.sql.Timestamp,更好的是你可以在数据库端处理这个,只需设置默认值

    create table test (ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP);
    

    【讨论】:

    【解决方案3】:
    PreparedStatement ps = con.prepareStatement(
                    "insert into UserActivity values (?, ?, ?, ?, ?, ?)");
    ....
    ps.setDate(5, new Timestamp(System.currentTimeMillis()));
    ....
    

    希望能帮到你

    【讨论】:

    • 假设我在数据库中插入 System.currentTimeMillis() 那么我可以将这些毫秒转换为日期吗?
    • 当然用这个http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Date.html#Date(long)
    • 感谢 jun xia,这种方法效果很好,也感谢所有回答者:)
    • 更好的是,使用时间戳并将其默认设置为当前时间戳。时间戳使用一半的日期时间存储,如果需要,数据库更容易索引
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-15
    • 1970-01-01
    • 2011-04-06
    相关资源
    最近更新 更多