2016-11-18 278 views
0

多部分問題: 1.如何查找/設置默認時間戳格式? 2.我有一個時間戳列,我需要插入 - 但我只有時間(沒有日期或年份) - 我該如何做到這一點? (這是否甚至意義)Cassandra時間戳問題

我跑了一些基本的測試實驗,無法真正解決任何問題:

CREATE TABLE testts (
      ID int PRIMARY KEY, 
      mdate timestamp,    
      ttime timestamp); 

INSERT INTO testts (ID , mdate, ttime) 
VALUES (1, '2015-10-12', '2014-10-12') ; 

INSERT INTO testts (ID , mdate, ttime) 
VALUES (2, '2015/10/15', '2013/10/12') ; //This fails 

INSERT INTO testts (ID , mdate, ttime) 
VALUES (2, '20151015', '20131012') ; //Did not put any format 

INSERT INTO testts (ID , mdate, ttime) 
VALUES (3, '2009-08-12', '1020') ; //my actual data is just time 

cqlsh:tests> select * from testts; 

id | mdate     | ttime 
----+--------------------------+-------------------------- 
    1 | 2015-10-12 07:00:00+0000 | 2014-10-12 07:00:00+0000 
    2 | 1970-01-01 05:35:51+0000 | 1970-01-01 05:35:31+0000 //1970 ?? 
    3 | 2009-08-12 07:00:00+0000 | 1970-01-01 00:00:01+0000 //1970 ?? 

(3 rows) 

如上不知何故這1970顯示出來?

感謝所有,

+0

如果沒有所有字段,則不是時間戳。如果這不是你想要存儲的,不要使用'timestamp'。改爲使用每個時間字段的列。 –

+0

> select * from testtime; ID | mdate | ttime ---- + -------------------------- + ---------------- ---- 1 | 2015-10-12 07:00:00 + 0000 | 00:00:00.000001020 2 | 2014-08-15 07:00:00 + 0000 | 00:00:00.000000930 (2 rows) –

+0

(上面的評論已經預先發布)是的,它確實不使用時間戳(除非有辦法)。因此,嘗試使用時間列類型,並輸入像1020,930等時間,但選擇獲得** 0s **在前面 - 它們是什麼意思 - 看起來不像date/year'> select * from testtime; ID | mdate | ttime ---- + -------------------------- + ---------------- ---- 1 | 2015-10-12 07:00:00 + 0000 | 00:00:00.000001020 2 | 2014-08-15 07:00:00 + 0000 | 00:00:00.000000930 (2行)' –

回答

0

the official documentation(如果這是一個可視化的問題):

您可以通過在cqlshrc文件的 [UI]部分設置TIME_FORMAT屬性更改格式。

在同一鏈接中,您可以找到所有需要了解的信息。具體做法是:

值的時間戳類型被編碼爲64位帶符號的整數表示 以來被稱爲曆元標準的基本時間 毫秒數:1970年1月1日00:00:00 GMT。

您只有時間插入纔會與該日期相關,並且會按原樣顯示。

而不是使用timestamp列,您可以使用普通的int(或bigint,根據您的需要)來存儲只有時間的部分。