【golang】mysql默认排序无法实现 使用golang实现对时间字符串字段的排序

一、问题场景

1、mysql实现排序-性能低下

例如:某字段 finish_time 数据如下:6:13:2710:56:1121:56:11

会出现顺序如下的场景: 10:56:1121:56:116:13:27

二、解决方案

2、golang实现排序

go 复制代码
package main

import (
	"fmt"
	"sort"
	"strconv"
	"strings"
)

// 提取小时、分钟和秒部分的函数
func extractHourMinuteSecond(timeStr string) int {
	parts := strings.Split(timeStr, ":")
	if len(parts) >= 3 {
		hour, _ := strconv.Atoi(parts[0])
		minute, _ := strconv.Atoi(parts[1])
		second, _ := strconv.Atoi(parts[2])
		return hour*3600 + minute*60 + second
	}
	return 0
}

func main() {
	// 示例数据,包含两个时间字符串
	time1 := "6:13:27"
	time2 := "10:56:11"
	time3 := "21:56:11"

	// 将示例数据放入切片中
	times := []string{time1, time2, time3}

	// 自定义排序逻辑
	sort.Slice(times, func(i, j int) bool {
		// 提取小时、分钟和秒部分
		timeI := extractHourMinuteSecond(times[i])
		timeJ := extractHourMinuteSecond(times[j])

		// 比较时间值
		return timeI < timeJ
	})

	// 输出排序后的结果
	for _, t := range times {
		fmt.Println(t)
	}
}

输出结果:

6:13:27

10:56:11

21:56:11

相关推荐
LiLiYuan.2 分钟前
【happens-before 八大规则详解】
java·开发语言
断点之下7 分钟前
从C的struct到C++的class:封装、this指针、三大特性入门
开发语言·c++
yongui478348 分钟前
基于稀疏低秩分解的图像去噪MATLAB实现
开发语言·matlab
geovindu11 分钟前
python: N-Barrier Pattern
开发语言·python·设计模式·屏障模式
战族狼魂20 分钟前
MetaPrompt编译器核心逻辑拆解
开发语言·人工智能·python
gihigo199825 分钟前
MATLAB实现光谱特征波长提取
开发语言·matlab
代钦塔拉27 分钟前
Qt信号槽参数类型全解:原生类型、结构体、enum class强枚举注册与传参实战
开发语言·qt
dinl_vin35 分钟前
Python 并发编程实战:多线程、协程与多进程全解析
开发语言·人工智能·python
程序大视界36 分钟前
【C++ 从基础到项目实战】C++(五):类与对象基础——构造、析构与访问控制
开发语言·c++·cpp
代码中介商36 分钟前
掌握C++ std::bind:参数绑定与灵活调用
开发语言·c++