gpt4 book ai didi

mysql - UTC 数据库中 IST 数据按小时求和值

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

我的数据库在 UTC 时区和 UTC 时间插入数据。我想对 IST 时间数据的所有值求和并按小时分组。如下所示,

id  data_id value serverTime
1 2 100 2016-05-02 18:30:54
2 2 100 2016-05-02 18:45:54
4 2 200 2016-05-02 19:00:54
5 2 100 2016-05-02 19:15:54
6 2 100 2016-05-02 19:30:54
7 2 100 2016-05-02 19:40:54

查询

select sum(value) as value, serverTime as date
from Data_table
where data_id=2
and serverTime between CONVERT_TZ('2016-05-03 00:00:01','+00:00', '-05:30')
and CONVERT_TZ('2016-05-03 10:45:24','+00:00', '-05:30')
group by year(date),month(date),week(date),day(date),hour(date);

上面的查询给出的结果是:

200    
500

但期望输出:

600    
100

因为 IST 12 AM = UTC- 05:30 这意味着 18:30 到 19:30 但这里我的查询只计算 18:30 到 19 :0019:00 到 20:0020:00 到 21:00 这不是准确值。

我想计算 18:30 到 19:3019:30 到 20:30 的 IST 时间数据精度值。

如何解决?

最佳答案

IST,我假设您指的是印度标准时间,比 UTC 早 5 小时 30 分钟。作为固定偏移量,这将是 +05:30,而不是 -05:30。您的结果不正确,因为您的符号倒置了。

CONVERT_TZ 函数接受任何:

  • 'SYSTEM' 本地系统时区
  • 标准 ISO 8601 format 中的固定偏移量,它具有 UTC 的正偏移量 East,例如印度的 '+05:30''-10: 00' 代表夏威夷。
  • 命名时区,使用标准 IANA/Olson TZDB identifiers ,假设时区表已填充。印度的时间是 'Asia/Kolkata',美国东部时间是 'America/New_York',等等。使用此选项需要根据 the documentation 填充 mysql 时区表。

一般来说,命名时区是首选,因为它们可以适应由于夏令时和历史变化而导致的偏移量变化。然而,印度自 1942 年以来一直固定在 +05:30,并且在不久的将来不太可能改变,因此如果这是您需要的唯一时区,使用固定偏移方法是合理的处理。

另请注意,与许多 time zone abbreviations 一样,“IST”是不明确的。它可以表示印度标准时间 (+05:30)、爱尔兰标准时间 (+01:00) 或以色列标准时间 (+02:00)。另请注意,爱尔兰标准时间实际上是一个夏令时 时区偏移量,尽管其中有名称“Standard”。为避免混淆,请在以后提及 IST 时指定您的具体位置,不要指望计算机能够区分它们。

关于mysql - UTC 数据库中 IST 数据按小时求和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37115418/

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