首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么使用order或latest排序时间戳只按日期排序,而不是按时间排序?

为什么使用order或latest排序时间戳只按日期排序,而不是按时间排序?
EN

Stack Overflow用户
提问于 2020-09-13 06:17:35
回答 1查看 367关注 0票数 0

我在用Laravel。我将这一行添加到控制器中

代码语言:javascript
复制
$remarks = Remarks::where('document_id', $document->id)->orderBy('created_at', 'DESC)->get();

代码语言:javascript
复制
$remarks = Remarks::where('document_id', $document->id)->latest('created_at')->get();

我用foreach来获取每一个评论。

以下是$remark->$description的结果

11月10日,2019-8:29

2019年10月10日至下午2时49分

2019年10月10日至下午3:57

2020年9月13日-下午2:06

2020年9月13日-下午2:08

它应该是

9. 13,2020 -下午2:08

2020年9月13日-下午2:06

2019年11月10日至8时29分

2019年10月10日至下午3:57

2019年10月10日至下午2时49分

而且,即使我将orderBy更改为ASC或DESC,它也不会影响视图中的任何内容,它总是显示如下

11月10日,2019-8:29

2019年10月10日至下午2时49分

2019年10月10日至下午3:57

2020年9月13日-下午2:06

2020年9月13日-下午2时08分

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-13 06:21:38

这里的问题是,您似乎在存储文本时间戳,而且这些时间戳并不是以允许按它们排序的格式来给出任何有意义的时间顺序。这里的一个解决办法是,不要对此进行排序:

代码语言:javascript
复制
Nov. 10, 2019 - 8:29 am

使用STR_TO_DATE对此作为日期进行排序

代码语言:javascript
复制
STR_TO_DATE('Nov. 10, 2019 - 8:29 am', '%b. %d, %Y - %h:%i %p')

我们可以在Laravel中使用orderByRaw来完成以下操作:

代码语言:javascript
复制
$remarks = Remarks::where('document_id', $document->id)
    ->orderByRaw("STR_TO_DATE(created_at, '%b. %d, %Y - %h:%i %p') DESC")
    ->get();

作为一些一般性建议,您可能希望考虑将created_at列设置为datetimetimestamp中的MySQL。如果您这样做,那么排序降序将工作,而不必求助于使用STR_TO_DATE

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63867751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档