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

时间:2019-04-30 18:47:44

标签: cassandra cassandra-2.0

我正在使用cassandra 2.2.3,以下是我的表结构,用于将doj存储为日期对象。

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'
}

//使用SimpleDateFormat将字符串修改为日期

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 个答案:

答案 0 :(得分:1)

def create_dyn_tab(self): menuTab = TabbedPanelHeader(text="Menu") self.tp.add_widget(menuTab) sv = ScrollView() menuTab.content = sv container = GridLayout(cols=2) sv.add_widget(container) for i in range(8): container.add_widget(Label(text='Label'+str(i))) container.add_widget(CheckBox()) 是一个时间戳(长),为8个字节,并且您向其传递了一个字符串'2010-01-05',即10个字节。您需要将该日期字符串转换为epoc时间戳(长)或日期。