如何在PowerShell中获取SQLite可空DateTime字段的纯时间值?
解决PowerShell读取SQLite可空DateTime字段仅取时间值的问题
问题根源
你的查询语句没有给CAST转换后的列指定别名,导致返回的结果列名是完整的表达式CAST(Alive as nvarchar(20)),而非你定义的$col1(myColumnName)。所以你用$_.$col1无法匹配到对应的属性,自然输出空行。
解决方案一:修改SQL语句添加别名(推荐)
直接在SELECT语句中给转换后的列起别名,和原列名一致,这样就能正常通过$col1访问值:
$colId = "myPrimaryKeyColumn" $col1 = "myColumnName" # 添加AS $col1指定别名 $select = "SELECT CAST($col1 as nvarchar(20)) AS $col1 FROM $table ORDER BY $colId DESC LIMIT 1" # 执行查询后直接取值 $result = Invoke-SqliteQuery -SQLiteConnection $con -Query $select $targetValue = $result.$col1
解决方案二:不修改SQL,直接提取结果值
如果不想改动SQL,可以通过PowerShell的对象属性直接提取值,不用依赖列名:
$result = Invoke-SqliteQuery -SQLiteConnection $con -Query $select # 提取第一个属性的值 $targetValue = $result.PSObject.Properties.Value
或者通过匹配列名的方式访问:
$result = Invoke-SqliteQuery -SQLiteConnection $con -Query $select # 找到列名包含CAST的属性并取值 $targetValue = $result."CAST($col1 as nvarchar(20))"
验证结果
执行上述任一方案后,$targetValue就会直接返回04/11/2022 17:17:15这个时间字符串。
内容的提问来源于stack exchange,提问作者Paul Efford
相关产品推荐
相关产品推荐

