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

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

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

  1. Table structure:
  2. class Emp{
  3. String name
  4. Date doj
  5. }
  6. empdata:
  7. id name doj
  8. 1 Test 2010-01-01 00:00:00+0000
  9. 2 Test1 2011-01-01 00:00:00+0000

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

  1. {
  2. "dateFrom":'1/1/2010'
  3. }

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

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

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

  1. Select selectQuery = QueryBuilder.select().all().from(tableName).allowFiltering()
  2. Where selectWhere = selectQuery.where();
  3. rangeClause(selectWhere,dateFrom,Tue Jan 01 00:00:00 PST 2010);
  4. Statement s = selectWhere.limit(1)
  5. println("st is:"+s);
  6. In the select statement i see the query as "SELECT * FROM emp WHERE doj>=1551427200000 LIMIT 1;
  7. //Function Call
  8. def rangeClause(Where selectWhere, String columnName, Object columnValue)
  9. {
  10. Clause whereClause = null
  11. whereClause= QueryBuilder.gte(columnName, columnValue.get("dateFrom"))
  12. selectWhere.and(whereClause)
  13. }
bvjveswy

bvjveswy1#

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

相关问题