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 + "'");
以上代码不起作用。
答案 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+"'"
由于您的日期字段是字符串,因此您必须通过字符串比较
进行查找