MySQL 查询中别名 temp 为何返回 NULL?
问题:在 mysql 查询中,使用以下语句查询别名为 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 是 varchar 类型。
解答:
在提供的 sql 语句中,格式化字符 "%h" 用于表示小时(12 小时制)。然而,plan_start_time 列中存储的是 24 小时制的时间,因此使用 "%h" 会导致格式化失败,从而返回 null。
解决方案:
要正确地格式化计划开始时间,应该使用大写字母 "h" 来表示 24 小时制的时间。以下是修改后的 sql 语句:
select str_to_date(plan_start_time, '%h:%i:%s') as temp,plan_start_time from base_stop_calendar
使用此语句后,别名 temp 将返回格式正确的日期和时间。