【问题标题】:Change type of calculated field in select query (sqlite)在选择查询(sqlite)中更改计算字段的类型
【发布时间】:2016-10-10 20:37:32
【问题描述】:

我确定我不是第一个提出这个问题的人,但我找不到这个问题的答案: 我对 sqlite 数据库中的数据表进行了选择查询。

select *, ((int_EndTime)-(int_StartTime))/60 as dou_usage_min FROM tbl_unautho_usage;

当我运行它时,我会从数据表中获取所有字段,包括一个新列,该列计算自具有 unix 时间戳值的整数列。但是,我希望我的计算列是 double 类型。通过上面的查询,我得到一个整数类型。

select *, ((int_EndTime as float)-(int_StartTime as float))/60 as dou_usage_min FROM tbl_unautho_usage;

之后我尝试将整数列的列类型更改为浮动,但这给了我以下错误:

near "as": syntax error: 

我从以下帖子中得到了这个想法: How to cast computed column with correct decimal/$ result

【问题讨论】:

    标签: sql sqlite select


    【解决方案1】:

    尝试将算术运算中使用的值乘以1.0

    select 
      *, 
      ((int_EndTime*1.0)-(int_StartTime*1.0))/60 as dou_usage_min 
    FROM tbl_unautho_usage;
    

    可能只有一个值相乘就足够了。

    【讨论】:

      【解决方案2】:

      CAST expression 的正确语法是“CAST(something AS type)”。

      但在这种情况下,要使用浮点数进行除法,至少有一个操作数是浮点数就足够了:

      SELECT *, (int_EndTime - int_StartTime) / 60.0 ...
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-09-16
        • 2021-08-27
        • 1970-01-01
        • 2016-11-28
        • 2012-05-19
        • 1970-01-01
        • 2016-02-14
        • 1970-01-01
        相关资源
        最近更新 更多