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
其中:
然而,原查询返回的 temp 列为 NULL。
答疑
根据给出的答复,这个问题可能是由于以下原因造成的:
- 格式化字符串中 h 和 h 的大小写错误。h 代表小时(00 到 12),而 h 代表小时(00 到 23)。在给出的查询中,h 是小写,因此它期望输入字符串中的小时值介于 00 到 12 之间,但实际输入的时间值可能超过 12。
已提供了一个修改后的查询,其中将 h 替换为 h。该查询可以正确地将 plan_start_time 字符串转换为日期格式并存储在 temp 列中。
另外,需要确保 plan_start_time 列确实包含有效的时间字符串格式。varchar 类型可以存储文本,但它不验证数据的格式。