无法在MySQL中将字符串转换为时间

无法在MySQL中将字符串转换为时间,mysql,datetime,Mysql,Datetime,下面是一个查询,我想在其中转换一个字符串,该字符串是在将三个字段连接到时间后形成的: SELECT STR_TO_DATE( CONCAT(session_date," ",session_start_time," ",time_format), '%Y-%M-%e %h:%i %p' ) as u_date FROM sessions session\u date是一个日期类型字段,包含值YYYY-MM-DD和session\u start\u time是一个varchar,它保存如

下面是一个查询,我想在其中转换一个字符串,该字符串是在将三个字段连接到时间后形成的:

SELECT STR_TO_DATE(
  CONCAT(session_date," ",session_start_time," ",time_format),
  '%Y-%M-%e %h:%i %p'
) as u_date FROM sessions
session\u date
是一个日期类型字段,包含值
YYYY-MM-DD
session\u start\u time
是一个varchar,它保存如下字符串
HH:MM
time\u格式
是一个varchar字段,它还包含值
AM
PM
,例如,连接后的字符串变成这样:
2012-10-03 12:16 PM


当我运行这个查询时,我得到的结果为空。有语法问题吗?因为如果我删除了
STR_TO_DATE
,字段会连接在一起,没有任何错误

您使用了错误的日期格式:

%Y-%M-%e %h:%i %p
应该是:

%Y-%m-%d %h:%i %p
因为

  • %M
    表示文本月份,例如
    “一月”

  • %e
    表示未添加的天数,例如
    “1”而不是
    “01”


  • 谢谢,伙计是的,我给了错误的格式说明符:)再次感谢,伙计@PHPSeeker您可以使用
    显示警告