laravel mysql timestamp 使用详解

端木安国
2023-12-01

项目中主要2个时区设置:

app  time_zone 处理app内时间相关函数处理

db time_zone 处理写入数据库的时间字符串的时区处理(带时区功能的字段类型如timestamp)

laravel中,使用含时间字段的model,写入的sql填充时间字段的值为'2021-06-28 21:40:19' ,跟app time_zone;

写入数据库的时候根据session的timezone+写入时间字符串内容保存至带时区属性的timestamp;

数据库查询时,数据库内timestamp按当前session的timezone获取时间值,即按不同时区写入timestamp后读取的结果是不同的时间字符串;

使用CURRENT_TIMESTAMP自动填充的mysql字段,为带时区的即使时间,mysql自行处理

查询:
    使用DB::select后结果为'2021-06-28 21:40:19' 格式
    使用Model::find后结果为'2021-06-28T19:40:19.000000Z' 格式 (参考修改https://learnku.com/docs/laravel/7.x/upgrade/7445#date-serialization)
时区设置参考
    TIME_ZONE=Europe/Berlin
    DB_TIMEZONE=Europe/Berlin

 类似资料: