mysql 查询中别名 alias 为 temp 的值为何返回 null?
根据所提供的查询:
SELECT STR_TO_DATE(plan_start_time, '%h:%i:%s') AS temp, plan_start_time FROM base_stop_calendar;
别名 temp 表示从 plan_start_time 列中转换后的时间值,但查询返回 NULL。这是因为:
猜测 1:数据格式错误
plan_start_time 列存储的是 varchar 类型,但格式字符串 ‘%h:%i:%s’ 要求输入格式为 ‘hh:mm:ss’(两位数小时)。如果 plan_start_time 中包含一位数小时值,则转换将失败并返回 null。
猜测 2:格式字符大小写不符
格式字符串中的 ‘%h’ 表示小写小时格式器,该格式器返回 00-12 小时制的 12 小时格式。而 plan_start_time 中的时间值可能采用 00-23 小时制的 24 小时格式,在这种情况下,应使用 ‘%h’ 而不是 ‘%h’。
猜测 3:其他原因
还可能是由于其他原因导致转换失败,例如:
- 数据损坏
- 权限问题
- 语法错误
为了确定确切原因,建议检查以下方面:
- 检查 plan_start_time 列中数据的格式是否正确。
- 确保格式字符串与所需的时间格式相匹配。
- 尝试使用不同的查询来排除语法或权限问题。
- 如果仍然无法解决问题,请提供更详细的信息,包括数据库版本、表结构和实际数据样本。