你会在ORDER BY子句的时间戳上使用CONVERT_TZ()吗?

时间:2012-10-06 06:18:07

标签: mysql convert-tz

有人可以告诉我为什么要在ORDER BY子句的时间戳上使用CONVERT_TZ()。在这种情况下,时间戳将始终为UTC。

我在我正在使用的一段代码中找到它,由于mysql_tzinfo_to_sql,它现在有问题,所以我想删除它。

我可以看到在其他地方使用它的原因,例如SELECT和WHEN。但是否有正当理由在ORDER BY中使用它?

2 个答案:

答案 0 :(得分:1)

如果它们都转换为相同的时区,转换应该消失有两个原因;

  • 它打破了索引
  • 它可能会在DST转换时排序错误(当时间设置回来时,以后的UTC时间戳可能会在转换为本地时间之前的早期时间戳之前排序)

当然,如果你的逻辑依赖于,那么你可能希望保留它,因为它是一个功能改变。

答案 1 :(得分:0)

不,你不应该这样做。当您按列的功能进行ORDER BY时,无法有效使用该列的索引。您应该在此处删除函数调用,并按值自行排序。如果列被索引,这可能会大大提高速度。