Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将字符串转换为";yyy-MM-dd“;以日期作为数据类型的格式_Java_Hibernate_Spring Mvc_Hql_Crud - Fatal编程技术网

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中的值再次成为数据类型。