将字符串转换为日期并使用查询大于运算符在cassandra中无法正常工作

krcsximq  于 2021-06-10  发布在  Cassandra
关注(0)|答案(1)|浏览(340)

我使用的是cassandra2.2.3,下面是我的表结构,将doj存储为date对象。

Table structure:

class Emp{

String name
Date doj
}
empdata:

id                  name                          doj
1                   Test                         2010-01-01 00:00:00+0000
2                   Test1                        2011-01-01 00:00:00+0000

我必须使用大于或小于运算符来选择这些日期之间的员工。
从json中我得到以下输入来显示数据。

{
"dateFrom":'1/1/2010'
}

//使用SimpleDataFormat将字符串修改为最新

Date d1 = f.parse(dateFrom);
long milliseconds = d1.getTime();

//使用gte操作符从cassandra获取数据的查询调用

Select selectQuery = QueryBuilder.select().all().from(tableName).allowFiltering()
Where selectWhere = selectQuery.where();
rangeClause(selectWhere,dateFrom,Tue Jan 01 00:00:00 PST 2010);
Statement s = selectWhere.limit(1)
println("st is:"+s); 

In the select statement i see the query as "SELECT * FROM emp WHERE doj>=1551427200000  LIMIT 1;

//Function Call

 def rangeClause(Where selectWhere, String columnName, Object columnValue) 
    {
    Clause whereClause = null
    whereClause= QueryBuilder.gte(columnName, columnValue.get("dateFrom"))
    selectWhere.and(whereClause)
    }
bvjveswy

bvjveswy1#

dateFrom 是一个时间戳(长),它是8个字节,您传递给它一个字符串'2010-01-05',它是10个字节。您需要将该日期字符串转换为epoc时间戳(long)或日期。

相关问题