这是other original post的后续行动。
环境:
Cassandra在OpenSuse上运行(通过其Java虚拟机)。
服务器设置为时区"欧洲/苏黎世"。
测试仅包括此服务器。没有涉及其他服务器。
TEST:
"BEGIN BATCH USING CONSISTENCY ONE insert into tsmeasures(id,'2015-01-01 00:00:00','2015-06-01 00:00:00') values ('2812621',1,2) APPLY BATCH"
从PHP观察到的结果(在同一个Cassandra服务器上):
"SELECT '2014-06-01'..'2015-12-01' FROM tsmeasures WHERE id IN(2812621)"
unpacked_value=1420066800, str_time='2015-01-01 00:00:00' <= OK
unpacked_value=1433113200, str_time='2015-06-01 01:00:00' <= NOT OK !
因此,日期被解释为GMT + 1。
SOLUTION:
在&#34; cassandra_env.sh&#34;中,在运行Java时添加选项-Duser.timezone:
JVM_OPTS="$JVM_OPTS -Duser.timezone=Europe/Zurich"
修复后重复测试:
"BEGIN BATCH USING CONSISTENCY ONE insert into tsmeasures(id,'2015-01-01 00:00:00','2015-06-01 00:00:00') values ('2812621',1,2) APPLY BATCH"
在FIX之后观察到PHP的新结果(在同一个Cassandra服务器上):
"SELECT '2014-06-01'..'2015-12-01' FROM tsmeasures WHERE id IN(2812621)"
unpacked_value=1420066800, str_time='2015-01-01 00:00:00' <= OK
unpacked_value=1433113200, str_time='2015-06-01 00:00:00' <= OK
日期解释为: