时间以'09:21 am'的形式存储在数据库中
现在我如何获得范围结果
例如
select * from tablename where stored_time between '09:21 am' and '10:05 pm';
Run Code Online (Sandbox Code Playgroud)
我尝试了上面的查询,但它没有正确地给出结果.这是因为时间存储为varchar.
是否有任何函数将此字符串转换为时间并在mysql中查询它?
使用STR_TO_DATE()以下格式:
SELECT STR_TO_DATE(UPPER('09:21 am'), '%h:%i %p');
/* 09:21:00 */
Run Code Online (Sandbox Code Playgroud)
%h = 00-12小时
%i =分钟
%p= AM/PM(UPPER()转换为大写,以便它与您的小写版本匹配)
所以完整的查询:
SELECT *
FROM tablename
WHERE
/* Use 24h time for the comparison values and wrap stored_time in the STR_TO_DATE() */
STR_TO_DATE(UPPER(stored_time)) between '09:21:00' and '22:05:00';
Run Code Online (Sandbox Code Playgroud)
建议您将此列切换为实数TIME或DATETIME类型,而不是将值存储为字符串.