现在我想更改格式我想以dd-MMM-yyyy格式存储日期
您不需要显式转换为请求的日期格式dd-MMM-yyyy。
日期不直接与日期格式有关。在插入数据库表的日期字段之前,您的 SQL 驱动程序类将转换为适当的数据库特定格式。
使用 MySQL 驱动程序:
// this statement will cause sql date as '2014-03-21'
new java.sql.Date( new java.until.Date().getTime() );
在大多数数据库中,默认格式是YYYY-MM-DD。
示例(MySQL):
mysql> show variables like 'date_format';
+---------------+----------+
| Variable_name | Value |
+---------------+----------+
| date_format | %Y-%m-%d |
+---------------+----------+
1 row in set (0.00 sec)
mysql> select curdate();
+------------+
| curdate() |
+------------+
| 2014-03-21 |
+------------+
1 row in set (0.05 sec)
详细示例:
public class SimpleDateFormat_Example {
public static void main(String[] args) throws Exception {
String dateInputPattern = "yyyy-MM-dd"; // numeric 2 digit month
String dateTargetPattern = "yyyy-MMM-dd"; // For 3 char month name
String dateString = "2014-03-20";
patternTest( dateInputPattern, dateString, dateTargetPattern );
System.out.println();
// day of month first and then 2 digit month
dateInputPattern = "yyyy-dd-MM";
dateString = "2014-21-03";
dateTargetPattern = "yyyy-MMMM-dd, EEEE"; // for Full month name
patternTest( dateInputPattern, dateString, dateTargetPattern );
} // psvm( ... )
public static void
patternTest( String dateInputPattern,
String dateString,
String dateTargetPattern ) throws Exception {
java.text.SimpleDateFormat sdf =
new java.text.SimpleDateFormat( dateInputPattern );
java.util.Date date = sdf.parse( dateString );
System.out.println( "Date Pattern: " + dateInputPattern );
System.out.println( "Date String : " + dateString );
System.out.println( "Date Value : " + date );
sdf.applyPattern( dateTargetPattern );
System.out.println( "Target Pattern: " + dateTargetPattern );
System.out.println( "Pattern based Date Value: " + sdf.format(date) );
java.sql.Date sqlDate = new java.sql.Date( date.getTime() );
System.out.println( "But, SQL Date: " + sqlDate );
} // patternTest( s, s, s )
} // end of class SimpleDateFormat_Example
如果您运行上述程序,您将看到以下结果。
结果:
Date Pattern: yyyy-MM-dd
Date String : 2014-03-20
Date Value : Thu Mar 20 00:00:00 IST 2014
Target Pattern: yyyy-MMM-dd
Pattern Formatted Date Value: 2014-Mar-20
But, SQL Date: 2014-03-20
Date Pattern: yyyy-dd-MM
Date String : 2014-21-03
Date Value : Fri Mar 21 00:00:00 IST 2014
Target Pattern: yyyy-MMMM-dd, EEEE
Pattern Formatted Date Value: 2014-March-21, Friday
But, SQL Date: 2014-03-21
仔细查看 SQL Date,它在所有输出中都有相同的模式。与select curdate() 模式的结果也匹配,如本答案顶部所示。
结论:
尽管您在脚本语言中为日期类型数据库字段设置和应用了特定模式,但它只会存储在为数据库日期类型定义的default 模式中。
因此,将模式从yyyy-MM-dd 转换为yyyy-MMM-dd 并发送到数据库不会影响和更改任何内容。