невозможно запросить базу данных с использованием отметки времени - PullRequest
0 голосов
/ 01 сентября 2018

У меня есть эта таблица

user_authentication_token (
    token_id uuid,
    user_id uuid,
    email text,
    expiration_time timestamp,
    is_sign_up boolean,
    PRIMARY KEY ((token_id, user_id, email, expiration_time))

и у меня есть эти данные в таблице

token_id                             | user_id                              | email                   | expiration_time                 | is_sign_up
--------------------------------------+--------------------------------------+-------------------------+---------------------------------+------------
 98b0456a-05b2-4aca-a6c7-6a1f382e19aa | b284d51d-efbb-4204-b342-a2486029a5c5 | manu.chadha@hotmail.com | 2018-09-01 09:40:59.634000+0000 |       True

Но я не могу запросить его.

select * from user_authentication_token where token_id=98b0456a-05b2-4aca-a6c7-6a1f382e19aa and user_id=b284d51d-efbb-4204-b342-a2486029a5c5 and email='manu.chadha@hotmail.com' and expiration_time='2018-09-01 09:40:59.634000+0000';

Ошибка - InvalidRequest: Error from server: code=2200 [Invalid query] message="Unable to coerce '2018-09-01 09:40:59.634000+0000' to a formatted date (long)"

Что я делаю не так?

Я вставил строку, используя Cassandra Java Datastax драйвер и следующий код

def insertValues(tableName:String, model:UserToken):Insert = {
    QueryBuilder.insertInto(tableName).value("token_id",model.tokenId) 
      .value("email",model.email)
      .value("user_id",model.userId)
      .value("expiration_time",model.expirationTime.getMillis())
      .value("is_sign_up",model.isSignUp)
      .ifNotExists(); }}

Интересно, что отметка времени хранится как long, но cqlsh показывает ее в читаемом формате. Возможно, мне нужно снова преобразовать его в long, но как мне это сделать?

1 Ответ

0 голосов
/ 01 сентября 2018

Ваша метка времени не должна содержать ничего, кроме миллисекунд:

select * from user_authentication_token
where token_id=98b0456a-05b2-4aca-a6c7-6a1f382e19aa
and user_id=b284d51d-efbb-4204-b342-a2486029a5c5
and email='manu.chadha@hotmail.com'
and expiration_time='2018-09-01 09:40:59.634+0000'; // removed extra precision

Обновление: Добавлено смещение часового пояса, как обнаружил Ману Чадха ниже.

...