我有一个位于远程共享服务器上的MYSQL数据库。
当用其他数据填充记录时,我表中的一列要求自动用CURRENT_TIMESTAMP填充。
数据库使用的系统时间为“ UTC +00:00”,但我需要将此时间设置为“ UTC +01:00”
我不能使用“ SET GLOBAL time_zone ='+01:00';”因为我没有特权(可以理解),并且了解没有办法仅在数据库级别设置time_zone(除了会话实例,此解决方案还需要坚持)。
有没有一种方法可以像计算那样用“ CURRENT_TIMESTAMP + ADD ONE HOUR”填充列?我正在寻找数据库级别的解决方案。
我不是数据库专家,但请多多指教。
答案 0 :(得分:0)
您将只更改时区,
示例:
如果不存在,则创建表test_timestamp( t1时间戳 );
SET time_zone ='+ 00:00';
插入INTO test_timestamp VALUES('2008-01-01 00:00:01');
选择 11 从 test_timestamp;
t1 ='2008-01-01 00:00:01'
SET time_zone ='+ 03:00';
选择t1 FROM test_timestamp;
t1 ='2008-01-01 03:00:01'
答案 1 :(得分:0)
寻找功能CONVERT_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
答案 2 :(得分:0)
您可以创建一个触发器,该触发器每次插入该列时都会启动
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 ;