Java 将字符串转换为";yyy-MM-dd“;以日期作为数据类型的格式
我试图通过获取日期然后填充表来获取存储在数据库中的数据Java 将字符串转换为";yyy-MM-dd“;以日期作为数据类型的格式,java,hibernate,spring-mvc,hql,crud,Java,Hibernate,Spring Mvc,Hql,Crud,我试图通过获取日期然后填充表来获取存储在数据库中的数据 List<String> contents = new ArrayList<>(); List<Record> records try { Session session = sessionFactory.getCurrentSession(); Query<World> query = null; query = sessi
List<String> contents = new ArrayList<>();
List<Record> records
try {
Session session = sessionFactory.getCurrentSession();
Query<World> query = null;
query = session.createQuery("from World where date like :dateCont, World.class);
query.setParameter("dateCont", "%" + contents.get(0) + "%");
worlds = query.getResultList();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
那么,有没有办法将给定值更改为date,但它应该保留格式“yyyy-MM-dd”,并且数据类型应该是date
注:数据库中的日期格式也是“yyyy-MM-dd”。
“我的日期”实体字段和“数据库中的日期”都是日期
数据类型
只能对字符串(
VARCHAR
)字段使用like
运算符。在WHERE子句中,您必须将字段转换为字符串(使用format函数),以便能够像一样使用。因此,您必须在查询中调用convert函数
不幸的是,EJBQL中没有日期函数,因此您必须切换到本机查询。例如,对于Oracle,您可以像这样使用来\u CHAR
SELECT ... WHERE TO_CHAR(date, 'MM/DD/YYYY') LIKE ...
为了获得良好的性能,您必须添加一个函数索引
另见
另一种选择是添加一个新的字符串列date\u string
,该列将包含日期的格式表示,并将此列与类似的。但您必须绝对确保两个日期始终同步。您只能在字符串(VARCHAR
)字段上使用like
运算符。在WHERE子句中,您必须将字段转换为字符串(使用format函数),以便能够像
一样使用。因此,您必须在查询中调用convert函数
不幸的是,EJBQL中没有日期函数,因此您必须切换到本机查询。例如,对于Oracle,您可以像这样使用来\u CHAR
SELECT ... WHERE TO_CHAR(date, 'MM/DD/YYYY') LIKE ...
为了获得良好的性能,您必须添加一个函数索引
另见
另一种选择是添加一个新的字符串列date\u string
,该列将包含日期的格式表示,并将此列与类似的。但您必须绝对确保两个日期始终同步。尝试以下方法:
DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date d1= (Date) format.parse(yourDate);
试试这个:
DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date d1= (Date) format.parse(yourDate);
日期没有“yyyy-MM-dd”格式。@Stultuske是,但要从数据库中获取数据,格式应该相同,对吗?数据库中日期的格式为“yyyy MM dd”否,类型必须相同。如果它是数据库中的一个varchar,则将其作为字符串读取;如果它是数据库中的一个日期,则将其作为日期读取。如果显示日期,则java中的日期具有default格式。您只能使用新的SimpleDataFormat(“yyyy-MM-dd”)更改输出格式。格式(日期)
@Stultuske-date是my DB中的类型。存储在“contents”中的值来自.txt文件,因此我首先解析它到Date,并使用以下代码将其格式化为“yyyy-MM-dd”:Date-Date=new-SimpleDateFormat(“MM/dd/yyyy”)。parse(value);添加(新的简化格式(“yyyy-MM-dd”)。格式(日期)代码>但内容中存储的数据类型是字符串,因为“.format(value)”。这就是为什么我要问如何将Content Date中的值重新设置为数据类型。日期没有“yyyy-MM-dd”格式。@Stultuske是的,但要从数据库中获取数据,格式应该相同,对吗?数据库中日期的格式为“yyyy MM dd”否,类型必须相同。如果它是数据库中的一个varchar,则将其作为字符串读取;如果它是数据库中的一个日期,则将其作为日期读取。如果显示日期,则java中的日期具有default格式。您只能使用新的SimpleDataFormat(“yyyy-MM-dd”)更改输出格式。格式(日期)
@Stultuske-date是my DB中的类型。存储在“contents”中的值来自.txt文件,因此我首先解析它到Date,并使用以下代码将其格式化为“yyyy-MM-dd”:Date-Date=new-SimpleDateFormat(“MM/dd/yyyy”)。parse(value);添加(新的简化格式(“yyyy-MM-dd”)。格式(日期)代码>但内容中存储的数据类型是字符串,因为“.format(value)”。这就是为什么我要问如何使contents中的值再次成为数据类型。