【问题标题】:HQl query to get week of the yearHQl 查询以获取一年中的一周
【发布时间】:2014-03-24 10:48:52
【问题描述】:

我需要进行以下 MSSQLServer 查询,以获取当前周所做更改的数量

select count(1) from Audit_tbl where DATEPART( wk, action_time)=DATEPART( wk,getdate())

我对函数DATEPART(wk, action_time)=DATEPART(wk,getdate()) 感到震惊,HQL 中是否有任何等价物。

还有一种方法可以在 HQL 中从 2014-03-24 20:56:26.297 获取 date(2014-03-24) 部分

更新:

select DATEADD(day,datediff(day,0,action_time),0) AS ActionDate,
count(1) as total 
from Server_tbl
where YEAR(action_time) = YEAR(getdate())
group by DATEADD(day,datediff(day,0,action_time),0)

它按动作时间给出记录组(作为时间戳存储在数据库中)

【问题讨论】:

  • 你的目标是什么?我认为没有简单的日期功能,但根据您想要做什么,有不同的选择。
  • @julien 请查看更新

标签: hibernate hql date-formatting week-number


【解决方案1】:

我认为 HQL 中没有 week() 函数。而且你不能混合使用 HQL 和 SQL。

因此,您可以使用 SQL 查询或切换到 Criteria 查询并实现自己的 SQLCriterion 来生成您想要的确切 SQL 片段(参见 javadoc here

更新:我错过的另一个选项是 extract() 函数。 首先,您必须将 Hibernate 配置为使用 SqlServerDialect(或其子类之一)。 然后提取函数将在 SQL 中翻译为DATEPART,下面的子句应该可以解决问题:

... where extract(wk from actionTimeProperty) = extract(wk from current_date())

【讨论】:

  • 从 2014-03-24 20:56:26.297 获取日期部分的任何建议
猜你喜欢
  • 1970-01-01
  • 2015-03-26
  • 2019-07-27
  • 2011-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-24
相关资源
最近更新 更多