gpt4 book ai didi

mysql - 使用负值的 STR_TO_DATE 对时区表进行排序

转载 作者:行者123 更新时间:2023-11-29 15:25:05 25 4
gpt4 key购买 nike

我在 mysql 中有一个时区表,其中包含三个 varchars 列:php 时区代码、每个时区的 GMT 偏移数据以及如下所示的显示名称:

Africa/Abidjan, 0:00, (GMT) Monrovia, Reykjavik
Africa/Addis_Ababa, +3:00, (GMT+3:00) Nairobi
Africa/Algiers, +1:00, (GMT+1:00) West Central Africa

我正在尝试使用 ORDER BY STR_TO_DATE(`data_gmt`, '%l:%i') 来订购此表,但我遇到了负偏移量问题。

当选择偏移字符串的日期值时,mysql 会显示负值和 0:00 值的空值。

data_gmt, STR_TO_DATE(`data_gmt`, '%l:%i')
---------------
0:00 NULL
+3:00 03:00:00
+1:00 01:00:00
+2:00 02:00:00
-10:00 NULL
-9:00 NULL

有没有办法从负时间偏移 -> 0 -> 正时间偏移对时区表进行排序?

最佳答案

您可以使用SUBSTRING_INDEX提取 : 左侧的小时部分,然后将其 CAST 转换为有符号整数以进行排序:

SELECT *
FROM data
ORDER BY CAST(SUBSTRING_INDEX(data_gmt, ':', 1) AS SIGNED)

Demo on dbfiddle

关于mysql - 使用负值的 STR_TO_DATE 对时区表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59137175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com