我在表中有一个DATE数据类型mysql列。我想从我的java代码中设置该列的值,格式为YYYY-MM-DD
我使用以下代码来测试这些格式..
Calendar c = Calendar.getInstance();
c.setTime(new Date());
String d = c.YEAR+ "-"+c.MONTH+"-"+c.DATE;
但如果我在控制台中打印出该值,我会得到一些奇怪的输出。请帮忙。我怎么能做到这一点?
答案 0 :(得分:3)
在JDBC中,您可以使用setDate()
方法在预准备语句中设置DATE值,请参阅the API of PreparedStatement。这会将值转换为数据库中的DATE类型。
PreparedStatement prep = con.prepareStatement("some query with a DATE field");
Date d = new Date(System.currentTimeMillis());
// just an example (its the java.sql.Date class, not java.util.Date)
prep.setDate(index, d);
// ...
要使用DATE字段的值返回此 java.sql.Date 对象,请使用ResultSet class的getDate()
方法。
ResultSet res = con.executeQuery("some query with a DATE field");
Date d = res.getDate(index);
您可以使用d
对象,例如java.util.Date
对象(如在Calendar
对象中使用),因为它从中延伸。
答案 1 :(得分:2)
你要做的是:
String d = c.get(Calendar.YEAR) + "-" + c.get(Calendar.MONTH) + "-" + c.get(Calendar.DATE)
如果我没记错的话,你还必须在月份中添加+1,因为它返回偏移量(从0开始计算)而不是仅仅是月值(这对我来说是愚蠢的,但我没有做设计)。
此外,您可能希望检查SimpleDateFormat及其功能,以便很好地格式化日期。