liuzhenhang 发表于 2021-11-12 12:33

求大佬指点一下php与mysqli之间的问题

问题描述如下:

我mysql里面有一个字段 timeh随意命名的 .里面存入的格式为text   内容为11-11 10:00这种没有年份的日期格式

因为timeh 的内容要在网页前端循环显示出来 ,所以我就用了select * from a where time = '2021-11-11' order by timeh

就根据timeh的时间格式进行排序    ,但是遇到了一点小情况   排序的时候10:00 这个时间会排在 1:00 之前   请问有办法解决吗 最好就是sql语句解决因为涉及到显示和app端一旦重改的话涉及的工程就很大了

mysql查询的截图如下

kof21411 发表于 2021-11-12 13:01

用 unix_timestamp函数把日期转时间截 然后再排序

情侣空间hh 发表于 2021-11-12 13:07

楼上正解

jlxyzxd 发表于 2021-11-12 13:15

直接用时间排序效率太低,一般的先转成整数秒,然后进行运算

m58758788 发表于 2021-11-12 13:21

为什么一直有人说时间截啊 不是时间戳吗

liuzhenhang 发表于 2021-11-12 13:32

kof21411 发表于 2021-11-12 13:01
用 unix_timestamp函数把日期转时间截 然后再排序

timeh 的 格式为text   11-11 10:00这种好像不被认为是时间

kof21411 发表于 2021-11-12 13:43

liuzhenhang 发表于 2021-11-12 13:32
timeh 的 格式为text   11-11 10:00这种好像不被认为是时间

unix_timestamp('11-11 10:00','MM-dd HH:mm')

xuancang 发表于 2021-11-12 13:50

转换成标准秒数比较好吧,前端换算一下就好了,这种东西换成标准数据之后维护也方便

sss521 发表于 2021-11-12 14:20

字符串,截取,转时间戳,再排序。。。不榨干数据库性能,不罢休。

liuzhenhang 发表于 2021-11-12 14:41

sss521 发表于 2021-11-12 14:20
字符串,截取,转时间戳,再排序。。。不榨干数据库性能,不罢休。

省掉不必要的麻烦了新建一个字段专门拿来保存时间戳然后order by 就完事了之前想得复杂了转换来 转换去
页: [1]
查看完整版本: 求大佬指点一下php与mysqli之间的问题