2012-04-03 11 views
0

検索基準から年を入力したすべてのレコードが必要です。休暇の年基準を使用する検索レコード

ex:String year = "2012";

どのように動作するのですか?

criteria.add(Restrictions.like("createDate", "%"+year+"%")); 

createDateは、oracleデータベースからDD-MM-YYの形式でフェッチされます。

示唆してください。..

+1

CREATE_DATEが '' OracleのDATEでcreateDate'であることを仮定してい

criteria.add(Restrictions.sqlRestriction("to_char({alias}.CREATE_DATE, 'yyyy') = ?", year, Hibernate.STRING)); 

'?または 'VARCHAR2'ですか?それが 'DATE 'の場合、フォーマットはありません.Oracleの日付は常に人間が読めないような圧縮バイナリ形式で保存されます。 –

+0

はいOracleのcreateDateはDATEです。 DD-MM-YY形式で取得します。しかし、2011年か2012年か2009年かを選択した場合のように、通年ベースの検索レコードが必要です。同じために休止状態にある解析メソッドがありますか?私は他のいくつかの基準も持っています。だから私はSQLクエリを使用することはできません。 – Sweety

+0

昨日聞いた質問には違いはないと思う:http://stackoverflow.com/questions/9973730/hibernate-criteria-for-get-records-which-have-year-2012/9974789#9974789彼らは同じIMOです。 –

答えて

2

何かのように試してみてください:私はcreateDateにマッピングされた列の名前が

+0

別名ではどうすればよいですか?ここで日付は01-10-12または02-12-08とすることができます。 – Sweety

+0

'照会されたエンティティの行エイリアスに置き換えられる{エイリアス}プレースホルダー' http://docs.jbossを参照してください。 org/hibernate/orm/3.3/reference/en/html/querycriteria.html( '{エイリアス} 'の部分も除いて試してみてください) –

+0

@JustinCaveによると、Oracle Dateにはフォーマット。 'to_char'で文字列に変換するときにフォーマットすることができます。私の答えでは、日付から4桁の年しか取れませんでした。日付を照会すると(つまりsqlplusで)、NLS_DATE_FORMATでフォーマットされた文字列として取得されます。これはおそらく 'DD-MM-YY'です。これは「4桁の年」がないことを意味しません。 –

関連する問題