Hello Ralf,

First of all, Cassandra stores timestamps without timezone information, so
it's not possible to retrieve the original timezone used when inserting the
value.

CQLSH uses the python driver behind the scenes, and my guess is that the
timestamp formatting is being done driver-side – hence the timezone – while
when you call toJson(), the formatting has to be done server-side.

That said, it does seem that Cassandra is using a format without timezone
when converting timestamps to JSON format:
https://github.com/apache/cassandra/blob/cassandra-3.0/src/java/org/apache/cassandra/serializers/TimestampSerializer.java#L52

I agree with you that a date format that would include the timezone would
be preferable here, but that is a question you should ask in the Cassandra
Users mailing list instead.

Hope that helps,

Alexandre




On Mon, Feb 8, 2016 at 11:09 AM Ralf Steppacher <ralf.viva...@gmail.com>
wrote:

> Hello all,
>
> When I select a timestamp as JSON from Cassandra, the string
> representation lacks the timezone information, both via CQLSH and the Java
> Driver:
>
> cqlsh:events> select toJson(created_at) AS created_at from
> event_by_patient_timestamp ;
>
>  created_at
> ---------------------------
>  "2016-01-04 16:05:47.123"
>
> (1 rows)
>
> vs.
>
> cqlsh:events> select created_at FROM event_by_user_timestamp ;
>
>  created_at
> --------------------------
>  2016-01-04 15:05:47+0000
>
> (1 rows)
> cqlsh:events>
>
> To make things even more complicated the JSON timestamp is not returned in
> UTC. Is there a way to either tell the driver/C* to return the JSON date in
> UTC or add the timezone information (much preferred) to the text
> representation of the timestamp?
>
>
> Thanks!
> Ralf

-- 
Alexandre Dutra
Driver & Tools Engineer @ DataStax

Reply via email to