【问题标题】:How can i search for the year in a date via a query?如何通过查询在日期中搜索年份?
【发布时间】:2013-04-29 10:54:36
【问题描述】:

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 + "'");

上面的代码不起作用。

【问题讨论】:

  • U 将它们存储为日期时间,而不是我希望的字符串?
  • 我将它们存储为 varchar
  • 如果您想搜索/计算/使用日期作为日期进行任何操作,请务必将它们作为日期或时间戳存储在数据库中。将使您的生活更轻松Getting values out of the DBbetween date1 and date2

标签: java sql


【解决方案1】:

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

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

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

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

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

【讨论】:

    【解决方案2】:

    你可以使用

    datepart(year,datefield)
    

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

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

    【讨论】:

      【解决方案3】:

      尝试将您的查询更改为

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

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

      【讨论】:

        猜你喜欢
        • 2016-12-16
        • 1970-01-01
        • 2023-03-05
        • 2011-09-11
        • 1970-01-01
        • 1970-01-01
        • 2014-03-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多