2

データベース内のレコードは次のようになります。

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

上記のコードは機能しません。

4

3 に答える 3

2

日付を VARCHAR として保存したので、ワイルドカード文字列の一致を行います

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

LIKE 句では、次の 2 つのワイルドカードを使用できます。

  • _ = 1 文字だけに一致
  • % = 任意の数の文字に一致

理想的には、TIMESTAMP 列を使用してテーブルを作成する必要があります。これにより、日付を正確に比較し、「過去 3 か月間のすべての顧客の支払いを取得する」などのクエリを作成できます。

于 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 に答える