Cassandra查询时间戳列

时间:2016-12-15 03:00:44

标签: cassandra-2.0 datastax-java-driver

使用Cassandra 2.28,Drive 3,Sparks2。 我在Cassandra中有一个时间戳列,只有才能按日期部分查询。如果我按日期查询:.where("TRAN_DATE= ?", "2012-01-21":它不会带来任何结果。如果我包含时间部分,则表示无效日期。我的数据(我可以在cqlsh中看到)是:2012-01-21 08:01:00 + 0000

param:" 2012-01-21" >没有错误但没有结果

param:" 2012-01-21 08:01:00" > 错误:日期无效

param:" 2012-01-21 08:01:00 + 0000" > 错误:日期无效

SimpleDateFormat DATE_FORMAT = new SimpleDateFormat(" yyyy / mm / dd"); TRAN_DATE = DATE_FORMAT.parse(" 1/19 / 2012"); 已使用批量加载程序/ SSLoader加载表

表格中的数据:

tran_date                | id
--------------------------+-------
 2012-01-14 08:01:00+0000 |    ABC
 2012-01-24 08:01:00+0000 |    ABC
 2012-01-23 08:01:00+0000 |    ALM
 2012-01-29 08:01:00+0000 |    ALM
 2012-01-13 08:01:00+0000 |    ATC
 2012-01-15 08:01:00+0000 |    ATI
 2012-01-18 08:01:00+0000 |    FKT
 2012-01-05 08:01:00+0000 |    NYC
 2012-01-11 08:01:00+0000 |    JDU
 2012-01-04 08:01:00+0000 |    LST

我该如何解决这个问题。

谢谢

1 个答案:

答案 0 :(得分:1)

如果您将数据插入时间戳列而不提供如下所示的时区:

<?php
$serverName = "Host";
$params = array();
$cursorType = array("Scrollable" => 'keyset');
$connectionInfo = array("UID"=>"usernam", "PWD"=>"pass", "Database"=>"db", "CharacterSet" => "UTF-8");
$conn = sqlsrv_connect($serverName, $connectionInfo);

$sqlstr1 =sqlsrv_query($conn,"my uqery",$params,$cursorType);   
$count=sqlsrv_num_wors($sqlstr1);

```````return TRUE;(written in code above)````` what it reutrns?
 Is it same as SQLSRV_FETCH_ARRAY?

?>

Cassandra将选择协调员时区

  

如果未指定时区,则使用处理写请求的Cassandra协调器节点的时区。为了准确起见,DataStax建议指定时区,而不是依赖于Cassandra节点上配置的时区。

如果使用Datastax Driver执行select,则需要将String date转换为java.util.Date并设置协调器节点的时区,在我的情况下,它是GMT + 6

INSERT INTO timestamp_test (tran_date , id ) VALUES ('2016-12-19','TMP')

现在您可以使用

进行查询
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = dateFormat.parse("2012-01-21");
dateFormat.setTimeZone(TimeZone.getTimeZone("GMT+6")); //Change this time zone

这是一个完整的演示:

QueryBuilder.eq("TRAN_DATE", date)

来源:https://docs.datastax.com/en/cql/3.0/cql/cql_reference/timestamp_type_r.html