【问题标题】:Remove trailing zeroes of time datatype in CQL删除 CQL 中时间数据类型的尾随零
【发布时间】:2018-03-22 21:43:31
【问题描述】:

试图去除到达时间的尾随零,列数据类型为时间

SELECT * FROM TABLE

我得到了这个:

station_name | arrival_time --------------+-------------------- Wellington | 06:05:00.000000000

我需要结果看起来像这样:

station_name | arrival_time --------------+-------------------- Wellington | 06:05:00

我是 CQL 新手,提前致谢。

【问题讨论】:

    标签: cassandra cql


    【解决方案1】:

    因此,您实际上无法在 Cassandra 中使用 time 类型执行此操作。但是,您可以使用 timestamp 来完成。

    cassdba@cqlsh:stackoverflow> CREATE TABLE arrival_time2 (station_name TEXT PRIMARY KEY, 
        arrival_time time, arrival_timestamp timestamp);
    cassdba@cqlsh:stackoverflow> INSERT INTO arrival_time2 (station_name , arrival_time , arrival_timestamp)
        VALUES ('Wellington','06:05:00','2018-03-22 06:05:00');
    cassdba@cqlsh:stackoverflow> SELECT * FROM arrival_time2;
    
     station_name | arrival_time       | arrival_timestamp
    --------------+--------------------+---------------------------------
       Wellington | 06:05:00.000000000 | 2018-03-22 11:05:00.000000+0000
    
    (1 rows)
    

    当然,这也不是你想要的,真的。所以接下来你需要在~/.cassandra/cqlshrc[ui] 部分设置time_format

    [ui]
    time_format = %Y-%m-%d %H:%M:%S
    

    重新启动 cqlsh,这应该可以工作:

    Connected to Test Cluster at 127.0.0.1:9042.
    [cqlsh 5.0.1 | Cassandra 3.11.2 | CQL spec 3.4.4 | Native protocol v4]
    Use HELP for help.
    cassdba@cqlsh> SELECT station_name,arrival_timestamp
        FROm stackoverflow.arrival_time2 ;
    
     station_name | arrival_timestamp
    --------------+---------------------
     Wellington | 2018-03-22 11:05:00
    
    (1 rows)
    

    【讨论】:

      【解决方案2】:
      select station_name, SUBSTRING( Convert(Varchar(20),arrival_time), 0, 9)  As arrival_time
      from [Table]
      

      使用下表和数据格式

      CREATE TABLE [dbo].[ArrivalStation](
          [station_name] [varchar](500) NULL,
          [arrival_time] [Time](7) NULL
      ) ON [PRIMARY]
      
      
      INSERT [dbo].[ArrivalStation] ([station_name], [arrival_time]) VALUES (N'Wellington ', N'06:05:00.0000000')
      INSERT [dbo].[ArrivalStation] ([station_name], [arrival_time]) VALUES (N'Singapore', N'12:35:29.1234567')
      

      【讨论】:

      • 是的,这在 Cassandra 中不起作用InvalidRequest: Error from server: code=2200 [Invalid query] message="Unknown function 'substring'"
      • 您的 CREATE TABLE 语句看起来也适用于基于 SQL 的 RDBMS。
      猜你喜欢
      • 2011-05-30
      • 1970-01-01
      • 1970-01-01
      • 2012-01-26
      • 1970-01-01
      • 1970-01-01
      • 2020-11-22
      • 2012-07-01
      • 2012-07-02
      相关资源
      最近更新 更多