我正在使用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)
}
答案 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时间戳(长)或日期。