2

The records in the db look like this:

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

I want to search 2013 in the above records. Do i have to split first above values?

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

Can I use like here?

Or how else can I do this?

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

The Above code does not work.

4

3 回答 3

2

由于您已将日期保存为 VARCHAR 进行通配符字符串匹配

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

LIKE 子句允许您使用两个通配符:

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

理想情况下,您应该使用 TIMESTAMP 列创建表。这将允许您准确比较日期并构建查询,例如“获取过去三个月内的所有客户付款”等。

于 2013-04-29T11:03:58.893 回答
1

您可以使用

datepart(year,datefield)

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

Query q = session.createQuery("SELECT date FROM CustomerPayment WHERE datepart(year,"+Convert.ToDateTime(datefield)+")="+ input+";
于 2013-04-29T11:00:07.930 回答
0

尝试将您的查询更改为

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

由于您的日期字段是一个字符串,您必须通过字符串比较进行查找

于 2013-04-29T11:03:23.293 回答