MySQL中保存的日期无效

时间:2014-10-05 06:24:12

标签: java mysql sql date simpledateformat

请查看以下代码

SimpleDateFormat format = new SimpleDateFormat("dd-mm-yyyy");
Date parse = format.parse("05-10-2014");
java.sql.Date sqlDate = new java.sql.Date(parse.getTime());

输出"应该是" 05-10-2014,但我得到的输出为2014-01-05。这有什么不对?

即使我将sqlDate保存在数据库中,它仍然保存为2014-01-05

更新

我将dd-mm-yyyy更改为dd-MM-yyyy。现在,mysql将其保存为2014-05-10

1 个答案:

答案 0 :(得分:4)

如果您担心日期的格式,java.sql.Date toString()方法,println时调用的方法,always会将日期格式化为是yyyy-mm-dd

如果您想以更加可控的方式格式化日期,可以在输出时使用DateFormat

但是,此处的真实问题(错误数据)是您正在使用小写 m这是“分钟”的格式字符小时“,而不是”一年一个月“。有关详细信息,请参阅SimpleDateFormat页面:

Letter  Date or Time Component  Presentation  Examples
------  ----------------------  ------------  --------
  M     Month in year           Month         July; Jul; 07
  m     Minute in hour          Number        30

在上面的第二个链接中,pards()的说明有这个小片段:

  

此解析操作使用日历生成日期。解析前会清除所有日历的日期时间字段,并且日历时间字段的日历默认值将用于任何缺少的日期时间信息。

由于Calendar的默认值是1970年1月1日,并且您只设置了日,分和年,因此您最终将在2014年1月5日(午夜十分钟)结束,假设UTC。

将格式字符串更改为"dd-MM-yyyy"应能解决当前问题。