php新增数据怎么存时间_datetime类型自动填充当前时间【技巧】


MySQL 的 DATETIME 字段需定义 DEFAULT CURRENT_TIMESTAMP 才能自动设为当前时间;PHP 不负责自动填充,Laravel 的 created_at 是框架层生成,不依赖 MySQL 默认值;PDO 插入时应省略该字段或统一用 UTC 时间避免时区错乱。

MySQL 的 DATETIME 字段如何自动设为当前时间

PHP 本身不负责“自动填充”,真正起作用的是 MySQL 的字段定义。如果你希望插入新记录时,created_at 或类似 DATETIME 字段自动填入当前时间,必须在建表或修改表结构时设置默认值:

ALTER TABLE users MODIFY created_at DATETIME DEFAULT CURRENT_TIMESTAMP;
注意:CURRENT_TIMESTAMP 只对 DATETIMETIMESTAMP 类型有效,且不能和 NULL 默认值混用(除非显式声明 NULL 并设默认)。如果字段已存在且允许 NULL,先清空或更新现有 NULL 值再改默认,否则可能报错。

PHP 插入时不传时间字段,但数据库仍没自动填充?

常见原因是字段定义里漏了 DEFAULT CURRENT_TIMESTAMP,或者用了 NOT NULL 却没设默认值,导致 PHP 执行 INSERT INTO ... () VALUES () 时 MySQL 拒绝插入(报错 Field 'created_at' doesn't have a default value)。检查方式:

SHOW CREATE TABLE users;
确认对应字段行是否包含 DEFAULT CURRENT_TIMESTAMP。另外,PDO 或 mysqli 插入时若显式传了 NULL 或空字符串(如 'created_at' => ''),也会覆盖默认行为——PHP 层要彻底不传该键,或传 NULL 且字段定义支持 NULL DEFAULT CURRENT_TIMESTAMP

Laravel Eloquent 中 created_at 自动填充的底层逻辑

Laravel 的 created_atupdated_at 是框架级行为,依赖两个条件:模型开启时间戳(public $timestamps = true;,默认开启),以及数据库字段名为 created_at/updated_at 且类型为 DATETIMETIMESTAMP。它**不依赖 MySQL 默认值**,而是在 PHP 层调用 now() 生成时间并写入 SQL。所以即使数据库字段没设 DEFAULT,Laravel 也能工作;但若你绕过 Eloquent 直接执行原生 SQL 插入,就不再生效。如需兼容两种方式,建议仍给字段加 DEFAULT CURRENT_TIMESTAMP,并把 updated_at 设为 ON UPDATE CURRENT_TIMESTAMP

用 PDO 插入时想手动控制时间,但又怕时区错乱

PHP 的 date('Y-m-d H:i:s')(new DateTime())->format('Y-m-d H:i:s') 生成的时间,受 PHP 进程时区影响(date_default_timezone_set()),不一定等于 MySQL 服务器时区。最稳妥的方式是让 MySQL 自己生成:

  • 字段设为 DATETIME DEFAULT CURRENT_TIMESTAMP
  • PDO 插入语句中完全不提该字段:
    $pdo->prepare("INSERT INTO logs (message, level) VALUES (?, ?)")->execute(['error', 'high']);
  • 如果必须用 PHP 生成,统一用 UTC 时间并存为 DATETIME(MySQL 不存时区信息):
    $utcTime = (new DateTime('now', new DateTimeZone('UTC')))->format('Y-m-d H:i:s');
避免混用 strtotime() 或本地时区格式化后直接拼 SQL,容易因服务器/DB 时区不一致导致时间偏移。


# mysql  # php  # laravel  # sql  # NULL  # date  # format  # timestamp  # mysqli  # pdo  # 字符串  # public  # default  # 数据库  # 设为  # 默认值  # 报错  # 的是  # 不传  # 不依赖  # 如果你  # 是在  # 也会  # 两种 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 网络优化76771 】 【 技术知识130152 】 【 IDC云计算60162 】 【 营销推广131313 】 【 AI优化88182 】 【 百度推广37138 】 【 网站推荐60173 】 【 精选阅读31334


相关推荐: Windows10如何查看蓝屏日志_Win10使用事件查看器分析Dump文件  Win11如何设置系统语言_Win11系统语言切换教程【攻略】  如何在Golang中使用container/heap实现堆_Golang container/heap最小堆方法  c# await 一个已经完成的Task会发生什么  PHP主流架构如何做单元测试_工具与流程【详解】  PythonPandas数据分析项目教程_时间序列透视表应用  Go 中 defer 在 goroutine 内部不生效的原因与执行时机详解  Windows10电脑怎么连接蓝牙设备_Win10蓝牙配对失败解决方法  Win11怎么开启游戏模式_Windows11优化游戏帧数设置指南  Win11如何设置省电模式 Win11开启电池节电功能【优化】  Win10怎样设置闹钟贪睡时间 Win10闹钟贪睡时长设置【步骤】  c++ nullptr与NULL区别_c++11空指针规范  Python解释执行模型_字节码流程说明【指导】  如何使用Golang实现微服务状态监控_Golang服务运行状态采集方法  win11如何清理传递优化文件 Win11为C盘瘦身删除更新缓存【技巧】  Win11如何隐藏桌面图标 Win11一键隐藏/显示桌面图标【指南】  c++的static关键字有什么用 静态变量和静态函数的应用场景【教程】  Win10怎样安装Word样式库_Win10安装Word样式教程【步骤】  Python装饰器设计思路_功能增强机制说明【指导】  php订单日志权限怎么设_php订单日志文件权限设置技巧【技巧】  如何减少Golang内存碎片化_Golang内存分配与回收优化方法  Win10如何更改开机密码_Windows10登录选项更改密码  如何在Golang中实现文件下载_Golang文件传输与内容类型处理方法  PythonPandas数据分析教程_数据清洗与处理技巧  Win11怎么设置默认邮件客户端 Win11修改Mail应用关联【教程】  php8.4如何实现队列任务_php8.4redis队列简单实现方法【教程】  如何在Golang中使用闭包_封装变量与函数作用域  Mac怎么查看活动监视器_理解Mac进程和资源占用【指南】  如何在 Go 中正确反序列化多个同级 XML 元素(而非单个根节点)  如何在Windows中创建新的用户账户?(标准与管理员)  Go 中实现 Python urllib.quote() 等效功能的正确方式  MAC怎么设置程序窗口永远最前_MAC窗口置顶插件安装与快捷设置【方法】  Win11怎么制作U盘启动盘_Win11原版系统安装盘制作【详解】  Python对象生命周期管理_创建销毁解析【教程】  Linux怎么修改用户密码_Linux系统passwd命令使用与权限管理【方法】  C#怎么创建控制台应用 C# Console App项目创建方法  Python实现图数据库操作_Neo4j核心CRUD与图算法解析  Win11如何设置文件权限 Win11 NTFS文件夹所有权与安全设置【高级】  Win11怎么关闭自动更新 Win11永久关闭系统更新的有效方法【技巧】  Windows10电脑怎么设置电源按钮_Win10按电源键关机或休眠  LINUX的SELinux是什么_详解LINUX强制访问控制系统的入门与配置  Windows怎样关闭Edge新标签页广告_Windows关闭Edge新标签页设置【步骤】  Windows如何使用BitLocker To Go加密U盘?(移动驱动器加密)  Win10系统更新错误0x80240034怎么办 Win10更新错误解决法【方法】  Python与OpenAI接口集成实战_生成式AI应用场景解析  Win11怎么关闭系统声音_Win11系统提示音静音设置【详解】  Python多线程使用规范_线程安全解析【教程】  PHP主流架构怎么处理表单验证_规则与自定义【技巧】  Python如何创建带属性的XML节点  Windows Defender扫描失败怎么办_安全模块损坏修复方式 

 2026-01-04

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

致胜网络推广营销网


致胜网络推广营销网

致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。

 915688610

 17370845950

 915688610@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.