sql中两个string类型的时分秒如何比较

sql中两个string类型的时分秒如何比较

前端传入两个入参String

img

数据库

img

我的sql

img

只有时间没有日期是没法比的
比如0点和1点谁大谁小呢,1号的1点肯定比2号的0点小才对,丢失了日期再比就不好比了
如果你能确定日期都一样,时间也都是按hh:mm:ss这样的标准格式,那么可以字符串直接比大小,字符串值大的时间肯定也大

按你呈现的数据库来看。就用正常的大小比较即可。比较大小时,完全相同的时间字符串格式是可以正常比较大小的
SELECT * FROM table where complete_time>='10:37:11' and complete_time<='10:37:26';

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7675353
  • 这篇博客你也可以参考下:SQL查询String字符串有空格。
  • 除此之外, 这篇博客: 《SQL经典实例》:3. string相关函数中的 综合应用(提取姓名首字母) 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 这个例子还不涉及循环,且只考虑2或3个单词作为名字的这两种情况:

    SELECT case 
    	   WHEN cnt = 2 THEN 
               concat(concat_ws('.', substr(substring_index(name, ' ', 1),1,1), substr(name, length(substring_index(name,' ',1))+2,1), substr(substring_index(name, ' ', -1),1,1)),'.')
           ELSE 
    		   concat(concat_ws('.', substr(substring_index(name, ' ', 1),1,1), substr(substring_index(name, ' ', -1),1,1)),'.')
    	   END AS initials
    FROM
    (SELECT name, (length(name)-length(REPLACE(name, ' ',''))) AS cnt FROM
    (SELECT REPLACE('Robert Downey Jr', '.','') AS name FROM T1)y)x;
  • 以下回答由chatgpt基于相关博客总结生成:

    可以使用STR_TO_DATE()函数将字符串时间转换为时间类型,然后进行比较。示例代码如下:

    SELECT * FROM table_name
    WHERE STR_TO_DATE(time_str1, '%H:%i:%s')
        > STR_TO_DATE(time_str2, '%H:%i:%s')
    

    其中,time_str1time_str2是字符串时间,'%H:%i:%s'参数是时间的格式。

    另外,需要注意的是,如果字符串时间中包含日期信息,需要在格式参数中加上日期格式部分。例如,如果字符串时间为'2022-01-01 16:30:00',则格式参数应该为'%Y-%m-%d %H:%i:%s'