如何在JPA中获取日期

时间:2014-06-17 11:57:44

标签: java mysql date jpa

我有一个问题,我不知道如何解决它。我有一个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;
}

2 个答案:

答案 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")