1

日付でフィルタリングする必要がある Hazelcast を使用して SqlPredicate を構築しようとしています。

私が得る例外は次のとおりです。

java.lang.RuntimeException: Unable to parse date from value: '2013-06-21 03:15:44.000' ! 
Valid formats are: 'EEE MMM dd HH:mm:ss zzz yyyy', 'yyyy-MM-dd hh:mm:ss.SSS' and 'yyyy-mm-dd'.

奇妙なことは、私の日付が 2 番目の「有効な」パターンと正確に一致することです。

私は何をすべきか?前もって感謝します...

4

1 に答える 1

3

パッケージ内のバージョン 2.5 の hazelcast ソース コードを見ていますが、必要に応じてcom.hazelcast.query使用される日付関連の式は、Predicateそのタイプに応じた形式である必要があるようです。

  1. java.util.Timestamp -"yyyy-MM-dd hh:mm:ss.SSS"

  2. java.sql.Date -"yyyy-mm-dd"

  3. java.util.Date -"EEE MMM dd HH:mm:ss zzz yyyy"

を簡単に使用java.util.Timestampできる場合は、日付式をそのままの形式で使用できます。

または、使用している場合はjava.util.Date、同じ日付を形式で試すことができます"EEE MMM dd HH:mm:ss zzz yyyy"か?

お役に立てれば。

Predicates.java からの関連する hazelcast ソース コードを以下に貼り付けます。

        } else if (type instanceof Timestamp) {
            if (value instanceof Date) { // one of java.util.Date or java.sql.Date
                result = value;
            } else {
                result = DateHelper.parseTimeStamp(valueString);
            }
        } else if (type instanceof java.sql.Date) {
            if (value instanceof Date) { // one of java.util.Date or java.sql.Timestamp
                result = value;
            } else {
                result = DateHelper.parseSqlDate(valueString);
            }
        } else if (type instanceof Date) {
            if (value instanceof Date) { // one of java.sql.Date or java.sql.Timestamp
                result = value;
            } else {
                result = DateHelper.parseDate(valueString);
            }

そして DateHelper.java から

static final String timestampFormat = "yyyy-MM-dd hh:mm:ss.SSS";
static final String dateFormat = "EEE MMM dd HH:mm:ss zzz yyyy";
static final String sqlDateFormat = "yyyy-mm-dd";
于 2013-06-24T10:47:22.883 に答える