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

Java 如何通过查询在日期中搜索年份?,java,sql,Java,Sql,数据库中的记录如下所示: 10//12/2013 10/13/2013 10/16/2013 10/20/2013 我想在上述记录中搜索2013。我必须首先拆分上述值吗 from CustomerRelations where DATE like'" + input + "' 我可以在这里使用吗 或者我还能怎么做 Query q = session.createQuery("from CustomerPayment where DATE like '" + code + "'");

数据库中的记录如下所示:

10//12/2013
10/13/2013
10/16/2013
10/20/2013
我想在上述记录中搜索2013。我必须首先拆分上述值吗

from CustomerRelations where DATE like'" + input + "' 
我可以在这里使用

或者我还能怎么做

   Query q = session.createQuery("from CustomerPayment where DATE like '" + code + "'");
上述代码不起作用。

您可以使用

datepart(year,datefield)
其中datefield是要从中检索年份的字段

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

尝试将查询更改为

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

由于日期字段是字符串,因此必须通过字符串比较进行查找,因为您已将日期保存为VARCHAR并进行通配符字符串匹配

Query q = session.createQuery("from CustomerPayment where DATE like '%" + code + "'");
LIKE子句允许您使用两个wilcards:

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

理想情况下,您应该创建带有时间戳列的表。这将允许您准确地比较日期,并生成诸如“获取过去三个月内的所有客户付款”等查询。

U将它们存储为datetime,而不是我希望的字符串?我将它们存储为varchari。如果您想搜索/计算/执行任何以日期为日期的操作,请确保将它们存储为数据库中的日期或时间戳。这会让你的生活变得更加轻松