首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在mysql中对unix时间戳进行排序

如何在mysql中对unix时间戳进行排序
EN

Stack Overflow用户
提问于 2015-11-06 15:43:14
回答 1查看 113关注 0票数 0

我正在尝试使用下面的查询检索一些数据。我需要在下面的查询'request_meta‘中再添加一个表,并且必须使用它的列'meta-value’进行排序,该列包含文本和unix时间戳等数据。

我需要在“meta-value”列中按时间戳的时间顺序获得这些结果。有人能帮我吗?

代码语言:javascript
复制
 SELECT rt.taxonomy_id,rt.iteration,ra.*,
  FROM request_taxonomy rt 
  inner join request_aspects ra ON ra.aspect_id = rt.request_aspects_id
  WHERE rt.requests_id = 17; 

  request_meta table structure as follows:
  ----------------------------------------    
  meta_id - Pri
  requests_id  - bigint 
  request_taxonomy_id  - bigint 
  meta-value  - varchar

request_meta表中的示例数据。第三行是存储的日期。其他表中的数据需要按日期升序排序。

代码语言:javascript
复制
requests_id meta_value request_taxonomy_id
17           8              925
17     Customer Cluster     926
17      1446792318          966
17      1446103569          967
EN

回答 1

Stack Overflow用户

发布于 2015-11-06 16:39:17

如果我没有弄错,您必须筛选出meta_value实际上是时间戳而不是其他值的行。

所以你应该检查它是不是数字。这里解释了如何做到这一点:Detect if value is number in MySQL

然后,您可以通过设置最小字符串长度以忽略meta_value列中的值(如8)来过滤误报。

因此,只需参考一下可能如下所示的meta_value:

代码语言:javascript
复制
SELECT *
FROM mytable
WHERE concat('',meta_value* 1) = meta_value AND  LENGTH(meta_value)>=10 
ORDER BY meta_value;

如果要管理较旧的时间戳,则可能需要更改字符串长度条件。

但我怀疑这是一种解决问题的有效方法。为了正确地解决这个问题,您应该考虑以一种将时间戳存储为数字值的方式来更改您的数据库结构。

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

https://stackoverflow.com/questions/33561777

复制
相关文章

相似问题

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