0

有人能告诉我为什么你会在 ORDER BY 子句中的时间戳上使用 CONVERT_TZ() 吗?在这种情况下,时间戳将始终采用 UTC。

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

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

4

2 回答 2

1

如果它们都转换到同一时区,则转换应该消失,原因有两个;

  • 它破坏了索引
  • 它可能会围绕 DST 转变进行错误排序(当时间倒退时,当转换为本地时间时,较晚的 UTC 时间戳可能会在较早的时间戳之前排序)

当然,如果您的逻辑依赖于后者,您可能希望保留它,因为它是功能更改。

于 2012-10-06T06:25:10.547 回答
0

不,你不应该这样做。当您 ORDER BY 列的函数时,该列上的索引无法有效使用。您应该在此处删除函数调用,并仅按值本身排序。如果列被索引,这可能会大大加快速度。

于 2012-10-06T06:23:24.360 回答