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的时区有关吗?
答案 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