订单时区 table 与 STR_TO_DATE 负值
Order timezone table with STR_TO_DATE with negative values
我在 mysql 中有一个时区 table,其中包含三个 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')
来订购这个 table,但我遇到了负偏移问题。
选择偏移字符串的日期值时,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 -> 正时间偏移来排序这个时区 table?
您可以使用SUBSTRING_INDEX
提取:
左侧的小时部分,然后CAST
将其提取为有符号整数进行排序:
SELECT *
FROM data
ORDER BY CAST(SUBSTRING_INDEX(data_gmt, ':', 1) AS SIGNED)
我在 mysql 中有一个时区 table,其中包含三个 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')
来订购这个 table,但我遇到了负偏移问题。
选择偏移字符串的日期值时,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 -> 正时间偏移来排序这个时区 table?
您可以使用SUBSTRING_INDEX
提取:
左侧的小时部分,然后CAST
将其提取为有符号整数进行排序:
SELECT *
FROM data
ORDER BY CAST(SUBSTRING_INDEX(data_gmt, ':', 1) AS SIGNED)