如何通过查询在日期中搜索年份?

时间:2013-04-29 10:54:37

标签: java sql

db中的记录如下所示:

10//12/2013
10/13/2013
10/16/2013
10/20/2013

我想在上面的记录中搜索2013。我是否必须首先拆分价值?

from CustomerRelations where DATE like'" + input + "' 

我可以在这里使用like吗?

或者我怎么能这样做?

   Query q = session.createQuery("from CustomerPayment where DATE like '" + code + "'");

以上代码不起作用。

3 个答案:

答案 0 :(得分:2)

由于您已将日期保存为VARCHAR,因此执行通配符字符串匹配

Query q = session.createQuery("from CustomerPayment where DATE like '%" + code + "'");

LIKE子句允许您使用两个wilcards:

  • _ =只匹配一个字符
  • %=匹配任意数量的字符

理想情况下,您应该使用TIMESTAMP列创建表。这样您就可以准确地比较日期并构建查询,例如"在过去三个月内获取所有客户付款"等

答案 1 :(得分:1)

你可以使用

datepart(year,datefield)

其中datefield是您要从中检索年份的字段

Query q = session.createQuery("SELECT date FROM CustomerPayment WHERE datepart(year,"+Convert.ToDateTime(datefield)+")="+ input+";

答案 2 :(得分:0)

尝试将您的查询更改为

Query q = session.createQuery("SELECT date FROM CustomerPayment WHERE date LIKE '%"+input+"'"

由于您的日期字段是字符串,因此您必须通过字符串比较

进行查找