gpt4 book ai didi

mysql - 意外的字符串转换为十六进制

转载 作者:行者123 更新时间:2023-11-29 08:40:42 25 4
gpt4 key购买 nike

我有一个采用小数的公式设置,即基数 10 3.6 三小时 6 分钟 并将小数位转换为基数 60 36 分钟。然后,它使用上限将分钟四舍五入到最接近的 15 分钟增量,因此它始终将 36 向上舍入到 45 分钟。然后它将小时部分与分钟部分连接起来,并在它们之间放置一个字符串冒号。该sql在 View 中执行。

现在,在 View 中,它显示为十六进制值,而不是字符串值 8:30 变为 0x383A333020483A4D。但在选择查询中,它采用正确的连接字符串格式。这是怎么回事?

CONCAT((((CEILING(((60 * ((agent_logins.hours_worked) % 1)) / 15)) * 15) / 60) + ((agent_logins.hours_worked) - ((agent_logins.hours_worked) % 1))) - (((CEILING(((60 * ((agent_logins.hours_worked) % 1)) / 15)) * 15) / 60) + ((agent_logins.hours_worked) - ((agent_logins.hours_worked) % 1))) % 1, ':', (((CEILING(((60 * ((agent_logins.hours_worked) % 1)) / 15)) * 15) / 60) + ((agent_logins.hours_worked) - ((agent_logins.hours_worked) % 1))) % 1 * 60) as hours_worked

最佳答案

CONCAT() 下所述:

If the arguments include any binary strings, the result is a binary string. A numeric argument is converted to its equivalent string form. This is a nonbinary string as of MySQL 5.5.3. Before 5.5.3, it is a binary string; to to avoid that and produce a nonbinary string, you can use an explicit type cast, as in this example:

SELECT CONCAT(CAST(<strong><em>int_col</em></strong> AS CHAR), <strong><em>char_col</em></strong>);

您必须使用 5.5.3 之前的 MySQL 版本,因此 CONCAT() 的数字参数将转换为二进制字符串(总体上生成二进制字符串)。您的客户端以十六进制形式向您显示二进制列,这是合理的行为。

正如文档所述(以及 @SofianeM's answer 中的建议),您可以通过使用 CONVERT() 显式转换回非二进制字符串来克服这个问题。或CAST() .

但是,为什么不简单地使用 SEC_TO_TIME()

SELECT SEC_TO_TIME(CEILING(4 * hours_worked) * 900)
FROM agent_logins

查看 sqlfiddle .

关于mysql - 意外的字符串转换为十六进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13869807/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com