【发布时间】:2011-10-08 11:04:44
【问题描述】:
我有一个字符串,其值的格式为:01-Jul-2011 12:52:00。
我想将其格式化为插入到 MySQL 数据库中,类型为 DATETIME。
我意识到我需要以 01-07-2011 12:52:00 的形式获取它,但我不知道该怎么做。
有什么解决办法吗?
【问题讨论】:
我有一个字符串,其值的格式为:01-Jul-2011 12:52:00。
我想将其格式化为插入到 MySQL 数据库中,类型为 DATETIME。
我意识到我需要以 01-07-2011 12:52:00 的形式获取它,但我不知道该怎么做。
有什么解决办法吗?
【问题讨论】:
【讨论】:
@Jigar 是正确的,如果不是很简洁的话。但看起来你可能需要更多信息,我会用勺子喂给你。
首先,您不应该尝试格式化日期以适应 mysql。您应该将 Date 作为参数传递给您的 sql 查询(而不是构建一个 sql 字符串)。
要从您的输入中解析日期,请尝试如下代码:
public static void main(String[] args) throws Exception {
String input = "01-Jul-2011 12:52:00";
SimpleDateFormat format = new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss");
Date date = format.parse(input);
System.out.println(date); // "Fri Jul 01 12:52:00 EST 2011"
}
下面是一个示例,说明如何使用 JDBC 连接器传递参数进行 sql 调用:
Date date = format.parse(input);
jdbcConnection.createStatement().execute("insert into mytable (id, some_date) values (?, ?)", new Object[]{1, date});
您无需担心如何为 mysql 格式化日期 - 让 JDBC 驱动程序为您完成。
【讨论】:
I suppose you mean you need to get the form "2011-07-01 12:52:00"? Here is a some example to convert between the two date representations:
String input = "01-Jul-2011 12:52:00";
java.util.Locale locale = new java.util.Locale("EN", "gb");
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("dd-MMMM-yy HH:mm:ss", locale);
try
{
java.util.Date date = sdf.parse(input);
java.text.SimpleDateFormat sdf2 = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss", locale);
String output = sdf2.format(date);
System.out.println("input: " + input + "\noutput: " + output);
}
catch (java.text.ParseException e)
{
// error handling goes here
e.printStackTrace();
}
【讨论】: