php - 为什么我不能将 php time() 用于时间戳列?

标签 php mysql sql timestamp

我在数据库表中有一个 timestamp 列。保存值:

UPDATE `table` SET `activated_at` = CURRENT_TIMESTAMP WHERE `id` = 123;

工作正常。

但是当我使用 php 函数 time() 获取时间戳时,它不起作用。它只能使用 date('Y-m-d H:i:s') 作为列值。问题是为什么?

列定义是:

`activated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'

我正在使用 php mysql 扩展(是的,我知道它已被弃用,但我必须维护一些遗留代码)

最佳答案

time()在 php 中返回一个 unix 时间戳,时间戳是一种日期时间类型,它需要一个有效的日期时间值。如果你没有提供有效的日期时间值,它将像 0000-00-00 00:00:00 一样存储.如果您想将字段保留为日期时间类型,那么您必须在 php 中提供 date('Y-m-d H:i:s')

同时检查 documention of various date time mysql 中的类型

关于php - 为什么我不能将 php time() 用于时间戳列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19660457/

相关文章:

php - ON UPDATE MySQL 与 DBAL Doctrine

php - 添加到数据库。刷新时不重复

mysql - 连接操作后选择特定列

mysql - Access(SQL)将一个数据中的两个字段拆分为两个数据

sql - 子选择(而不是数字常量)恶化优化

php - Bootstrap 轮播指示器和控件不适用于 php

php - 托尔根 CSRF 不工作

php - 如何在 Linux 上获取 Word 文档中的页数?

c# - mysql如何获取一个表的行数

sql - 创建一个触发器,在更新列时将值插入到新表中