mysql的类型timestmap

时间:2017-04-13 07:00:38

标签: mysql

UPDATE test SET add_time = '2017-04-29' WHERE id = 1;

'add_time'的类型是timestmap,上面的语句将插入'2017-04-29 15:00:00',我的问题是为什么它不是'2017-04-29 00:00:00' 。它可能与mysql的时区有关吗?

1 个答案:

答案 0 :(得分:0)

MySQL 5及以上,TIMESTAMP值从当前时区转换为UTC进行存储,并从UTC转换回当前时区进行检索。 (这仅适用于TIMESTAMP数据类型,而不适用于其他类型,例如DATETIME。)

默认情况下,每个连接的当前时区是服务器的时间。时区可以基于每个连接进行设置,如 MySQL Server Time Zone Support 中所述。

2017-04-29 15:00:00表示其时间为2017年4月29日下午3点。Timestamp也会保存日期和时间。那段时间是因为时区。

但是,如果您只需要选择datepart,则可以执行以下操作:

SELECT date(ColumnName) from tablename

以上只会获得日期部分。

  

当您需要包含两个日期的值时,将使用DATETIME类型   和时间信息。 MySQL检索并显示DATETIME值   'YYYY-MM-DD HH:MM:SS'格式。支持的范围是'1000-01-01   00:00:00'至'9999-12-31 23:59:59'。

     

...

     

TIMESTAMP数据类型的范围为'1970-01-01 00:00:01'UTC到   '2038-01-09 03:14:07'UTC。它有不同的属性,取决于   MySQL版本和服务器运行的SQL模式。

根据您的情况,我建议您使用datetime代替timestamp