更改选择查询中的计算字段类型(sqlite)

时间:2016-10-10 20:37:33

标签: sql sqlite select

我确定我不是第一个问这个但我无法找到答案的人: 我在sqlite数据库中的数据表上有一个select查询。

$RegLocations = @("HKLM:\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_ALLOW_USER32_EXCEPTION_HANDLER_HARDENING")

if([System.Environment]::Is64BitProcess){
    $RegLocations += "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_ALLOW_USER32_EXCEPTION_HANDLER_HARDENING"
}

foreach($Key in $RegLocations)
{
    if(-not(Test-Path $Key)){
        New-Item -Path $Key -Force
    }
    New-ItemProperty -Path $Key -Name "iexplore.exe" -Value 1 -ErrorAction SilentlyContinue -PropertyType DWord 
}

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

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

之后我尝试将整数列的列类型更改为float,但是这会让我发现以下错误:

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

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

CAST expression的正确语法是" CAST(某些 AS 类型)"。

但在这种情况下,对于使用浮点数进行除法,至少有一个操作数足以成为浮点数:

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