Mysql排序日期

时间:2014-01-22 07:04:52

标签: php mysql sql sorting

在DB中有一个用于存储日期的列,以毫秒为单位。 我想从数据库中选择已排序的毫秒值。什么是出路?

例如,

表名:xyz, 列名:时间(数据类型:varchar(45))。

该表是包含行,其值为1390274501774,1390274536947,1390274570978,1390274611391和1390274659078等。这些值以毫秒为单位进行存储。

我想以“SORTED”方式使用php-mysql选择上述值。查询是什么?

如何在php-mysql中实现?

3 个答案:

答案 0 :(得分:0)

您可以使用以下内容:

SELECT DATE_FORMAT(Time,'%d/%m/%Y') FROM xyz ORDER BY Time ASC

(或DESC降序)

您可以使用DATE_FORMAT()here

详细了解如何设置日期格式

希望这有帮助!

答案 1 :(得分:0)

查询应该是:

Select `Time` FROM xyz ORDER BY FROM_UNIXTIME(`Time`/1000) ASC;

答案 2 :(得分:0)

如果数据是varchar格式,则ORDER BY子句必须转换类型 如果您需要将毫秒显示为日期,请将它们转换为秒并使用FROM_UNIXTIME。如果需要,此函数具有可选的格式参数 以其他格式而不是标准格式。

你可以这样做:

SELECT id, FROM_UNIXTIME(ROUND(Time/1000,0)) AS ooo FROM xyz ORDER BY Time+0

(在http://sqlfiddle.com/#!2/7b71b/4播放)

ORDER BY表达式,而不是索引字段,非常昂贵,性能明智,您需要尽可能简单。

您可以考虑不将它们存储为varchar而是bigint,甚至可以添加另一列DATETIME 保存实际日期。

这样可以在值列表中添加类似99274659078的内容 ORDER BY varchar的问题就是例证。