如何在MySQL中将默认值current_timestamp增加1小时?

4
我有一个数据库,其中的时间戳字段默认采用当前时间戳,但是我遇到了时间问题,比如如果我在9:00插入一行,则它会将8作为时间戳。
所以我的问题是如何使该表中的current_timestamp默认增加一小时?我知道你可以使用php来解决这个问题,但我更喜欢纯mysql解决方案。
我有一个服务器时区问题,但我不想改变它,因为我担心这可能会影响服务器上的其他数据库,而我只想在一个数据库中更改时间戳。

可能是因为MySQL服务器位于不同的时区。 - hjpotter92
似乎是服务器时区的问题,请检查此链接:https://dev59.com/fXNA5IYBdhLWcg3wgeOk - mitkosoft
是否有一种方法可以在不更改服务器时区的情况下实现? - Mathew
可能是Should I use field 'datetime' or 'timestamp'?的重复问题。 - Strawberry
@Strawberry 这不是我需要的。 - Mathew
我们必须同意各自保留不同的看法。 - Strawberry
2个回答

9

做不到 CURRENT_TIMESTAMP + INTERVAL 1 HOUR,但可以定义一个触发器:

CREATE TRIGGER tr_dt_table BEFORE INSERT ON your_table FOR EACH ROW BEGIN
  SET NEW.datetime_field = NOW() + INTERVAL 1 HOUR;
END

并且要移除该字段的任何默认值(即默认将其设置为NULL),以避免矛盾。


我想补充一点,如果这是一个时间戳字段,它必须使用“fieldname timestamp NULL DEFAULT NULL”创建。 - Valter Ekholm
1
另外,我测试了触发器,它可以在没有“BEGIN”的情况下正常工作。 - Valter Ekholm

2
insert into table_name values (DATE_ADD(now() , INTERVAL 1 HOUR));

2
我想在我的时间戳字段中默认添加1小时。 - Mathew

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接