2011-07-19 31 views
2

我有一个字符串的格式值:01-Jul-2011 12:52:00。Java格式自定义日期到MySQL DATETIME

我想将其格式化为插入到类型为DATETIME的MySQL数据库中。

我意识到我需要得到它的形式01-07-2011 12:52:00但我不知道如何做到这一点。

任何解决方案?

回答

4

@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驱动程序为您做这件事。

+1

是的,你不需要担心格式,而JDBCing +1 –

+1

谢谢!这工作 – RobMunfy

0
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(); 
}