Hello! 欢迎来到小浪资源网!


MySQL查询中STR_TO_DATE函数导致别名列返回NULL值的原因是什么?


MySQL查询中STR_TO_DATE函数导致别名列返回NULL值的原因是什么?

mysql 中查询别名为 temp 的列为何返回 null?

这个问题涉及到 mysql 中使用 str_to_date() 函数将字符串转换为日期格式。

原始查询如下:

SELECT STR_TO_DATE(plan_start_time, '%h:%i:%s') AS temp, plan_start_time FROM base_stop_calendar

其中:

  • plan_start_time 是 varchar 类型,存储时间字符串
  • str_to_date() 函数将字符串转换为日期格式,别名为 temp

然而,原查询返回的 temp 列为 NULL

答疑

根据给出的答复,这个问题可能是由于以下原因造成的:

  • 格式化字符串中 h 和 h 的大小写错误。h 代表小时(00 到 12),而 h 代表小时(00 到 23)。在给出的查询中,h 是小写,因此它期望输入字符串中的小时值介于 00 到 12 之间,但实际输入的时间值可能超过 12。

已提供了一个修改后的查询,其中将 h 替换为 h。该查询可以正确地将 plan_start_time 字符串转换为日期格式并存储在 temp 列中。

另外,需要确保 plan_start_time 列确实包含有效的时间字符串格式。varchar 类型可以存储文本,但它不验证数据的格式。

相关阅读