2014-11-04 2 views
1

У меня проблемы с использованием функции now() с функцией timestamp.DSE/Cassandra CQL now() не работает для типа timestamp

Пожалуйста, обратите внимание на следующий код: создание

Таблица:

CREATE TABLE "Test" (
    video_id UUID, 
    upload_timestamp TIMESTAMP, 
    title VARCHAR, 
    views INT, 
    PRIMARY KEY (video_id, upload_timestamp) 
) WITH CLUSTERING ORDER BY (upload_timestamp DESC); 

проблемное ВСТАВИТЬ запрос:

INSERT INTO "Test" (video_id, upload_timestamp, title, views) 
    VALUES (uuid(), now(), 'Test', 0); 

Инструкция INSERT запрос кажется ищет хорошо для меня. Однако, когда я исполню его, я вижу следующее сообщение об ошибке:

Unable to execute CQL script on 'XXX': cannot assign result of function now (type timeuuid) to upload_timestamp (type timestamp)

Что я делаю неправильно здесь?

Я использую DataStax Enterprise 4.5.2

ответ

4

сейчас() возвращает timeuuid, а не временную метку. Вы можете попробовать dateOf (now()). Прочтите это из документов:

dateOf and unixTimestampOf

The dateOf and unixTimestampOf functions take a timeuuid argument and extract the embedded timestamp. However, while the dateof function return it with the timestamp type (that most client, including cqlsh, interpret as a date), the unixTimestampOf function returns it as a bigint raw value.

+0

Это исправило мою проблему. Большое спасибо. – kazy