【问题标题】:MySQL MIN and сonvert_tzMySQL MIN 和 сonvert_tz
【发布时间】:2019-08-23 12:01:17
【问题描述】:

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

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 的时间戳?

【问题讨论】:

  • 最小日期转换后与最小日期转换前有何不同?
  • 您能否阐明您的期望并提供一些带有示例数据的表格表示形式?
  • 由于时区差异,我想应该是 +3 小时。日期时间存储为时间戳。

标签: mysql convert-tz


【解决方案1】:

想一想……

这是一个只有 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)

【讨论】:

  • 好的,这是一个很大的不同。但是 DATE(CONVERT_TZ(dateTime,'+00:00', '+03:00') 呢?它也会减慢 DATE 调用的速度吗?如果时区不同,我无法按天分组
  • 我不明白这个问题。但也许你可以自己测试一下?
猜你喜欢
  • 1970-01-01
  • 2016-08-27
  • 2017-02-27
  • 2012-07-25
  • 1970-01-01
  • 1970-01-01
  • 2014-05-22
  • 2012-02-17
  • 2015-04-05
相关资源
最近更新 更多