【问题标题】:HQL Query based on date on a TimeStamp column?基于时间戳列上的日期的 HQL 查询?
【发布时间】:2013-07-24 05:56:53
【问题描述】:

我有一张表,里面有一个TimeStamp 列。我想对该表执行一个查询,给出只检查该列上的日期而不是时间的条件。 如何在 HQL 中做到这一点?

假设我的列具有值 07/23/2013 04:40:59 PM,我想选择查询以仅检查 7/23/2013 并忽略时间。

【问题讨论】:

    标签: java sql hql


    【解决方案1】:

    您可以在 HQL 中设置两个约束条件,一个指定大于或等于您搜索的开始日期,另一个指定小于第二天。

    table.timestamp >= 07/23/2013 AND table.timestamp < 07/24/2013
    

    from Table where to_char(TimeStamp,'YYYY/MM/DD') = '2013/07/23'
    

    【讨论】:

    • 因为第一个解决方案是硬编码的。计算下一个日期(7 月 24 日)然后将其传递给 sql 查询并不是很好。第二种解决方案更好,所以我现在点击了投票。
    【解决方案2】:

    另一种方法是使用DAY(...)MONTH(...)YEAR(...)expressions

    WHERE MONTH (timestampcol) = 7 
      AND DAY (timestampcol) = 23 
      AND YEAR (timestampcol) = 2013
    

    在 Postgres 中,这被映射到 extract(field from timestamp) 函数

    【讨论】:

      【解决方案3】:

      Wilts C. from Table 其中to_char(TimeStamp,'YYYY/MM/DD') = '2013/07/23' 是正确答案。其他答案与 HQL 无关,也没有解决如何格式化日期输入以在 HQL 中进行比较。

      我没有足够的声望来投票。 HQL 将接受日期字符串输入(注意 SQL 注入)并将其与您的列日期字符串格式进行比较。另一个例子:to_char(surveyDate,'YYYY/MM/DD') between '2000/09/23' and '2015/07/23'

      【讨论】:

        【解决方案4】:

        如果您使用 oracle 作为 DBMS,您可以在 HQL 中使用 trunc(timestamp) 来丢弃时间戳的小时部分。

        试试这个教程:Document

        【讨论】:

          【解决方案5】:

          Java 8

          .setParameter("dateParameter", Date.valueOf(fullDate), TemporalType.TIMESTAMP)

          地点:

          日期是java.sql.Date,fullDate 是java.time.LocalDate,并且 尝试比较的字段用@Temporal 声明。

          https://thoughts-on-java.org/persist-localdate-localdatetime-jpa/

          【讨论】:

            【解决方案6】:

            在 MySQL 中 HQL 可以是这样的:

            where DATE_FORMAT(date_column,'MM/dd/yyyy') = :date
            

            日期是“2013 年 7 月 23 日”

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-07-22
              • 2010-11-02
              • 2022-10-07
              • 1970-01-01
              • 2021-07-24
              • 2019-11-14
              相关资源
              最近更新 更多