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

时间:2015-11-06 07:43:14

标签: mysql

我正在尝试使用以下查询检索一些数据。我需要在下面的查询中添加一个表格,' request_meta',并且必须使用其列'元值'进行排序。其中包含文本和unix时间戳等数据。

我需要按照列'元值'中时间戳的时间顺序得到这些结果。 。任何人都可以帮助我吗?

 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表中的示例数据。第三行是存储的日期。其他表中的数据需要根据日期的升序排序。

requests_id meta_value request_taxonomy_id
17           8              925
17     Customer Cluster     926
17      1446792318          966
17      1446103569          967

1 个答案:

答案 0 :(得分:0)

如果我做对了,你必须过滤meta_value实际上是时间戳的行,而不是别的。

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

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

所以,只需要提到看起来像的meta_value:

SELECT *
FROM mytable
WHERE concat('',meta_value* 1) = meta_value AND  LENGTH(meta_value)>=10 
ORDER BY meta_value;

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

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