我有一个问题,我不知道如何解决它。我有一个MySQL数据库,其中有一个表,其中TIMESTAMP字段填充了由日期加时间组成的2014-06-18 10:00:00
之类的值。
我想通过JPA检索行仅传递实例18/06/2014
的日期,而不是时间。我试过这样做
...
.setParameter("date", getDate(date, "", ""), TemporalType.DATE)
...
其中getDate()
是以下方法,但我无法获得该行。事实上,如果我在没有日期参数的情况下进行查询,一切运行良好。那么这意味着比较日期存在问题。我该如何解决?
public Date getDate(String date, String hours, String minutes) //Spostare questa funzione
{
Date dateToStore = null;
SimpleDateFormat sdf;
try
{
if(StringUtils.isNotEmpty(hours) && StringUtils.isNotEmpty(minutes))
{
sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm");
dateToStore = sdf.parse(date + " " + hours + ":" + minutes);
}
else
{
sdf = new SimpleDateFormat("dd/MM/yyyy");
dateToStore = sdf.parse(date);
}
}
catch (ParseException e)
{
//Errore nel parsing della data
}
return dateToStore;
}
答案 0 :(得分:0)
尝试使用此方法:
public static Date stringToDate(String stringDate, String format) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat(format);
Date date = sdf.parse(stringDate);
return date;
}
然后按以下方式调用它:
Date formattedDate = stringToDate(originalDate, "yyyy-MM-dd hh:mm");
这将从您从DB读取的String中为您提供Date对象。
如果要从DB获取带日期的字符串,可以使用以下命令:
public static String convertDate(String stringDate, String oldFormat, String newFormat) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat(oldFormat);
Date date = sdf.parse(stringDate);
sdf.applyPattern(newFormat);
return sdf.format(date);
}
然后:
String formattedDate = convertDate(originalDate, "yyyy-MM-dd hh:mm", "dd/MM/yyyy");
答案 1 :(得分:0)
那么,你在日期解析中写了什么?
sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm");
dateToStore = sdf.parse(date + " " + hours + ":" + minutes);
该方法的参数是什么?
getDate(date, "", ""),
所以,你得到了这个:
dateToStore = sdf.parse(date + " :");
当然,这不会构建一个合适的日期。如果你颠倒了这种想法,你会发现你想要打电话给getDate(date, "00", "00")
。