我使用的是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)
}
1条答案
按热度按时间bvjveswy1#
dateFrom
是一个时间戳(长),它是8个字节,您传递给它一个字符串'2010-01-05',它是10个字节。您需要将该日期字符串转换为epoc时间戳(long)或日期。