kdb - q 中字符串转换的限制,TOK 中的星号
问题描述
我正在尝试将 int 值转换为分钟,在某些情况下,它会给我*
结果中的星星:
string "U"$"99:59" / "99:59"
string "U"$"100:00" / "**:00"
这颗星星出现的规则是什么?
更新几秒钟:
string "V"$"1000" / "10:00:00"
string "V"$"10000" / "**:00:00"
string "V"$"100000" / "10:00:00"
string "V"$"1000000" / "**:00:00"
是否可以配置此规则,例如停止涂抹原始值?
解决方案
我认为出现的星星只是 kdb 表示无法显示结果的方式。minute 和 second 数据类型的格式分别为 hh:mm 和 hh:mm:ss。因此,如果 kdb 将小时部分读取为超过 3 位(即大于 99),则会出现星号。
如果您将字符串转换为分钟数据类型,则 kdb 将最后两个字符转换为分钟,其余字符转换为小时,例如
"U"$"1234" / 12:34
"U"$"12345" / **:45
当您将字符串转换为秒时会发生类似的情况。如果字符串的长度为 6 或更大,则最后两个字符将转换为秒。否则,秒数设置为 00。然后字符串的其余部分将转换为 hh:mm,如上。为了说明这一点,请看:
"V"$"1234" / 12:34:00
"V"$"12345" / **:45:00
"V"$"123456" / 12:34:56
"V"$"1123456" / **:34:56
我还应该注意,即使出现星星,你仍然可以像往常一样做时间算术之类的事情,例如
"U"$"100:00 / **:00
("U"$"100:00")-"U"$"1:00" / 99:00
推荐阅读
- multidimensional-array - 如何从嵌套数组中提取数据 3-4 深度
- java - 从 LocalDate 获取月份中的日期,前导零
- powerbi - 在 Power BI 的矩阵表中用零替换空白
- android - Android Studio 中的 layout_marginTop
- python - 在 python 中训练测试拆分但考虑患者信息?
- mongodb - 使用 mongo 聚合查找两个间隔的最小/最大值
- excel - 从名称中查找具有多个值的excel
- go - Go 无法使用 go get 识别已安装的库
- python - 从python中的父文件夹导入
- java - 如何在 Spring Boot 中创建不可变和单例类?