openJPA日期格式
我从表中创建了实体。这是我的员工实体 类Emp{ 字符串id, java.sql.date连接日期 } 正如我看到的,to_date()在JPA中不适用,如何使用JPA将加入的日期以相同的格式2010-12-25T12:00:00保存到数据库中 如何指定此格式yyyy-MM-dd'T'HH:MM:ss 稍后,我想搜索以(yyyy-mm-dd)2010-12-25格式加入的emp,以便从数据库中获取所有值 2010-12-25T12:00:00 2010-12-25T11:00:00 2010-12-25T10:05:00openJPA日期格式,jpa,jpa-2.0,openjpa,Jpa,Jpa 2.0,Openjpa,我从表中创建了实体。这是我的员工实体 类Emp{ 字符串id, java.sql.date连接日期 } 正如我看到的,to_date()在JPA中不适用,如何使用JPA将加入的日期以相同的格式2010-12-25T12:00:00保存到数据库中 如何指定此格式yyyy-MM-dd'T'HH:MM:ss 稍后,我想搜索以(yyyy-mm-dd)2010-12-25格式加入的emp,以便从数据库中获取所有值 2010-12-25T12:00:00 2010-12-25T11:00:00 2010-1
@NamedQuery(name=“getEmployeeByDate”,query=“从Emp p中选择p,其中p.joinDate=?”我们无法保存日期值“2010-12-25T12:00:00”直接在数据库中。因此,我们必须使用SimpleDataFormat的解析方法将其转换为日期时间。借助解析方法,您可以获得日期时间值。然后您可以将该值存储到类型为TimeStamp的列中 要检索该值,请将这些值作为dateTime,然后在java.text包中使用SimpleDataFormat类的format方法格式化该值。Analysis 您正在混合存储数据的方式和预览数据的方式。数据库不关心格式化,用户关心 使用在数据库中存储日期,有三种形式:日期、时间和时间戳 使用:yyy-MM-dd、yyy-MM-dd'T'HH:MM:ss等向用户预览日期 按给定日期的任何部分(忽略格式)查询数据库 解决方案 您需要两个日期,一个代表今天00:00,另一个代表明天00:00,这将涵盖一天24小时。从两个日期中删除时间并将其传递给查询:
Date fromTimestamp = new Date();
Date toTimestamp = new Date();
Date fromDate = DateHelper.getDateWithoutTime(fromTimestamp);
Date toDate = DateHelper.getDateWithoutTime(
DateHelper.getTomorrowDate(toTimestamp));
//DateHelper.java
public static Date getDateWithoutTime(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
return cal.getTime();
}
public static Date getTomorrowDate(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DATE, 1);
return cal.getTime();
}
更新查询以使用两个参数:
@NamedQuery(name="getEmployeeByDate",
query="select p from Emp p where p.joinDate >= ? and p.joinDate <= ?")
@NamedQuery(name=“getEmployeeByDate”,
query=“从Emp p中选择p,其中p.joinDate>=?和p.joinDate将日期直接保存在数据库JAVA6 improduct TimeStamp class()中
首先,将您的实体替换为
类Emp{String id,TimeStamp joinDate}
现在,您可以使用setdate(),setHour()…方法来设置joinDate与所需格式,以指定您的时间,该时间将被SQL时间戳直接接受。即使我使用SimpleDataFormat或其他格式,openJPA也会以相同的格式显示,例如“Fri Jul 06 00:00:00 EDT 2012”。我只想要“Jul-06-2012”(无时间).persistence.xml中是否有一个参数可以执行此操作?