当前位置: 首页 > 知识库问答 >
问题:

将字符串转换为“yyy-MM-dd”格式,日期为数据类型

唐繁
2023-03-14

我试图通过获取日期然后填充表来获取存储在数据库中的数据。

    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();
    }

这里的问题是,它给了我一个错误异常:

Java语言lang.ClassCastException:类java。无法将lang.字符串转换为类java。util。日期(java.lang.String和java.util.Date位于加载程序“bootstrap”的模块java.base中)

我知道怎么了,因为

//The following are the codes that I tried but it won't work:

//FIRST

 Date date = new SimpleDateFormat("MM/dd/yyyy").parse(contentsStart.get(0));
 new SimpleDateFormat("yyyy-MM-dd").format(date);

//---------------------------------------

//SECOND

Date newDate;
DateFormat formatter = null;

formatter = new SimpleDateFormat("yyyy-MM-dd");
newDate = (Date) formatter.parse(contentsStart.get(0));

因此,有没有办法将给定值更改为date,但它应该保留格式“yyyy-MM-dd”并且数据类型应该是Date。

备注:数据库中的日期格式也是“yyyy-MM-dd”。my date entity字段和date from DB的数据类型都是date。

共有2个答案

笪智志
2023-03-14

您只能在字符串(VARCHAR)字段上使用运算符。在WHERE子句中,您必须将字段转换为字符串(使用格式函数)才能使用。所以您必须在查询中调用转换函数(也)。

不幸的是,EJBQL中没有DATE-函数,因此您必须切换到本机查询。例如,对于Oracle,您可以像这样使用TO_CHAR

SELECT ... WHERE TO_CHAR(date, 'MM/DD/YYYY') LIKE ...

为了获得良好的性能,您必须添加功能索引。

另请参见http://www.sqlines.com/oracle-to-sql-server/to_char_datetime

一种替代方法是添加一个新的字符串列date_string,它将包含日期的格式化表示形式,并将此列与like一起使用。但是您必须绝对确保两个日期始终同步。

祁曦哲
2023-03-14

尝试以下操作:

 DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
  Date d1= (Date) format.parse(yourDate);
 类似资料:
  • 我正在使用带有jquery日期选择器的struts2. x。 我想以dd/mm/yyyy的格式显示。但是从数据库中获取它的时候就像yyyy-mm-dd.Then我将其转换为所需的格式,但类型是String。所以接下来我将其转换为Date类型。但格式已更改。 输出: 来自DB的日期2012-07-04 以字符串形式形成日期04/07/2012 以日期形式形成日期日期星期六Apr 07 00:00:0

  • 问题内容: 我在网络上阅读了更多问题,但还没有找到解决方案。 我有一个完全像这种格式的 字符串, 例如“ 14/05/1994”。 我需要以 相同的格式* 将其隐藏到 java.util.Date 中。 * 我试过了: 但结果是:1994年5月14日星期六星期六00:00:00 结果是:1994年5月14日不是字符串,而是java.util.Date? 问题答案: 一个不 具有 的格式。这只是个约

  • 问题内容: 我正在尝试使用以下方式将dd-mm-yyyy格式的字符串转换为JavaScript中的日期对象: 包含格式为dd-mm-yyyy的日期。当我执行以下操作时,我得到“无效日期”: 这是因为符号“-”吗?我该如何克服? 问题答案: 分割为“-” 将字符串解析为所需的部分: 使用正则表达式 为什么不使用正则表达式? 因为您知道将要使用由连字符分隔的三部分组成的字符串。 但是,如果您要在另一个

  • 问题内容: 我有一个像这样的字符串。我想将其转换为相同格式的日期。我尝试过这样的事情: 但是输出是不同的格式,例如。我怎样才能使其按需工作。谁能帮我。我知道这可能是重复的,但我没有发现任何运气。 问题答案: 从Java APIhttps://docs.oracle.com/javase/8/docs/api/java/util/Date.html Date类表示特定的时间瞬间,精度为毫秒。 试着去

  • 问题内容: 如何将字符串的DataFrame列(以dd / mm / yyyy格式)转换为日期时间? 问题答案: 最简单的方法是使用: 它还为欧洲时代提供了依据(但请注意,这并不严格)。 它在起作用: 你可以传递一种特定的格式:

  • 问题内容: 2012年12月1日星期六00:00:00 GMT 我必须将以上日期转换为以下格式 2012-12-01 我怎样才能? 我已经尝试使用以下方法,但无法正常工作 问题答案: 用这个。 您将获得输出为