首页 > 解决方案 > 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"

是否可以配置此规则,例如停止涂抹原始值?

标签: kdbk

解决方案


我认为出现的星星只是 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

推荐阅读