我正在尝试从字符串示例13:30(HH:MM)创建一个date对象(格式: HH:MM)。我想将HH:MM保存在MySql表中,但是下面的代码在列中输入了一些随机值(例如:'6828-00-00 00:00:00')。如何在Mysql中以HH:MM格式存储日期值?
Date date = null;
String afternoon = "13" +":" +"30";
String time = afternoon;
try {
date = new SimpleDateFormat("HH:mm").parse(time);
}
catch (ParseException e) {
e.printStackTrace();
}
long d = date.getTime();
java.sql.Date sqlDate = new java.sql.Date(d);
String sql3 = "CREATE TABLE IF NOT EXISTS DateTime"+
"(UniqueBusID VARCHAR(255) not NULL, " +
" Timenings DATETIME DEFAULT NULL ,"+
" PRIMARY KEY ( UniqueBusID ))";
stmt.executeUpdate(sql3);
stmt.executeUpdate("INSERT INTO DateTime " + "VALUES ('Test3','"+sqlDate.getTime()+"')");
发布于 2014-02-21 02:07:10
编辑
您必须使用java.sql.Timestamp
而不是java.sql.Date
。从javadoc开始,
“为了符合SQL DATE的定义,必须通过在与java.sql.Date实例关联的特定时区中将小时、分钟、秒和毫秒设置为零来‘规范化’该实例包装的毫秒值。”
所以只需替换这一行
java.sql.Date sqlDate = new java.sql.Date(d);
使用
java.sql.Timestamp sqlTime = new Timestamp(d);
您做得很好,除了您用来将String
解析为Date
的模式,即HH:mm
,这是错误的。
格式正确:H:mm
(H
:0-23;h
:1-12)
try {
date = new SimpleDateFormat("H:mm").parse(time);
}
下面是Date and Time Patterns
的参考资料
发布于 2014-02-21 02:05:35
我很惊讶它插入了'6828-00-00 00:00:00‘:-)
这里有四个问题。
首先,当您设置SimpleDateFormat时,您正在创建一个java对象Date。Java日期从1970年1月1日开始,因此如果只设置小时和分钟,格式化程序将假定所有其他字段为零(而不是今天),因此
System.out.println(new SimpleDateFormat("HH:mm").parse("13:30")); // returns Thu Jan 01 13:30:00 BRT 1970
2但是,您调用了getTime()方法,该方法返回自1970年1月1日以来的millis
System.out.println(new SimpleDateFormat("HH:mm").parse("13:30").getTime()); //59400000
3然后,您已经尝试将这个数字推入MySQL。MySQL datetime需要以下格式的字符串
YYYY-MM-DD HH:MM:SS
(参见https://dev.mysql.com/doc/refman/5.0/en/datetime.html)
由于MySQL是一个非常友好的数据库;-)它尝试将59400000转换为这种格式,这显然
mysql>插入到d个值(59400000);查询正常,1行受影响(0.04秒)
mysql> select * from d;
+---------------------+
| y |
+---------------------+
| 5940-00-00 00:00:00 |
+---------------------+
1 row in set (0.08 sec)
4当然,您可以将您的SimpleDateFormat调整为MySQL预期的日期格式,但是您在INSERT查询中连接字符串,出于安全原因,这不是一个好主意,而且效率也不高。相反,您应该使用PreparedStatement并设置Date对象(而不是millis)
https://stackoverflow.com/questions/21923601
复制相似问题