MySQL MIN 和 сonvert_tz

标签 mysql convert-tz

我尝试在使用 convert_tz 将日期时间转换为用户时区后选择 MIN 日期,与 COUNT 相同:

MIN(CONVERT_TZ(dateTime,'+00:00', '+03:00')) AS dateTime,
COUNT(CONVERT_TZ(dateTime,'+00:00', '+03:00')) AS daygroup,

它似乎没有按预期工作。

CREATE TABLE sql_test_a 
( 
    ID         VARCHAR(255), 
    dateTime TIMESTAMP

); 

INSERT INTO sql_test_a (ID, dateTime) VALUES ('1', '2019-04-08 19:51:00');
INSERT INTO sql_test_a (ID, dateTime) VALUES ('2', '2019-04-08 19:52:00');
INSERT INTO sql_test_a (ID, dateTime) VALUES ('3', '2019-04-10 19:53:00');
SELECT 
MIN(CONVERT_TZ(dateTime,'+00:00', '+03:00')) AS dateTime,
COUNT(CONVERT_TZ(dateTime,'+00:00', '+03:00')) AS daygroup,
MIN(dateTime) AS dateTime1,
COUNT(dateTime) AS daygroup1
FROM sql_test_a
ORDER BY dateTime 

当我测试它时没有 http://sqlfiddle.com似乎转换后的 MIN 输出 2019-04-08 22:51:00 而未转换 MIN 输出 2019-04-08T19:51:00Z 是否可以从转换后的 MIN 输出带有 T 和 Z 的时间戳?

最佳答案

值得思考的事情...

这是一个只有 131072 行的数据集...

SELECT MIN(CONVERT_TZ(dateTime,'+00:00', '+03:00')) AS dateTime FROM my_table;
+---------------------+
| dateTime            |
+---------------------+
| 2001-01-01 03:00:00 |
+---------------------+
1 row in set (0.56 sec)

SELECT CONVERT_TZ(MIN(dateTime),'+00:00', '+03:00') AS dateTime FROM my_table;
+---------------------+
| dateTime            |
+---------------------+
| 2001-01-01 03:00:00 |
+---------------------+
1 row in set (0.04 sec)

关于MySQL MIN 和 сonvert_tz,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57625955/

相关文章:

mysql - 具有二进制信息的多行多列DB表的设计

mysql - 如何为mysql中的每个组赋予相同的值

MySQL CONVERT_TZ 不适用于 2 个相同的转换

php - 使用 COVERT_TZ 函数、php、mysql 更改 YEARWEEK 的时区偏移

mysql - 检测日期是否在 MySql 中的夏令时

从 vb 应用程序插入的 mysql (phpmyadmin) 行没有得到更新

MySQL MAX 函数混合行

基于数量的 PHP 增量价格计算器

mysql - 为什么MySQL CONVERT_TZ 在时区调整后会改变秒数?

mysql - 我怎样才能让查询询问所有 future 的日期而不是今天?