通过mysql中的列更正了不正确的时区结果?

alen0pnh  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(498)

我有一个mysql数据库,它位于远程共享服务器上。
当用其他数据填充记录时,表中的一列需要用当前的\u时间戳自动填充。
数据库使用的系统时间是“utc+00:00”,但我需要它是“utc+01:00”
我不能使用“设置全局时区='+01:00';”因为我没有特权(可以理解),而且我也明白,仅仅在数据库级别设置时区是不可能的(除了会话示例之外,这个解决方案还需要坚持)。
有没有一种方法可以让我的列填充“current\u timestamp+add one hour”,比如计算?因为我正在寻找一个解决方案,在db级的这个。
我不是很慷慨,但很感激你的建议。

vhipe2zx

vhipe2zx1#

您可以创建一个触发器,该触发器在每次插入该列时启动

DELIMITER $$
CREATE TRIGGER update_count

AFTER UPDATE ON table_name (time)

  UPDATE table_name
    SET HOUR(column_name) = SEC_TO_TIME((UNIX_TIMESTAMP(HOUR(column_name))+1)*60)
  WHERE time= NEW.time;

END;
$$DELIMITER ;
uinbv5nw

uinbv5nw2#

查找函数convert\u tz

mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','GMT','MET');
    -> '2004-01-01 13:00:00'
mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','+00:00','+10:00');
    -> '2004-01-01 22:00:00'

它可能对您的需要有所帮助,以下是文档:
https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_convert-tz公司

c86crjj0

c86crjj03#

你只会改变时区,
例子:
如果不存在,则创建表test\u timestamp(t1 timestamp);
设置时区='+00:00';
插入测试时间戳值('2008-01-01 00:00:01');
从测试时间戳中选择t1;
t1='2008-01-01 00:00:01'
设置时区='+03:00';
从测试时间戳中选择t1;
t1='2008-01-01 03:00:01'

相关问题