Php SQL声明不正确的datetime值,尽管行是时间戳
问题是,列(start)被设置为timestamp 因此,我为insert查询编写了以下代码:Php SQL声明不正确的datetime值,尽管行是时间戳,php,mysql,sql,Php,Mysql,Sql,问题是,列(start)被设置为timestamp 因此,我为insert查询编写了以下代码: $query = "INSERT INTO {$this->table_name} (`user_id`, `name`, `code`, `start`, `city`, `state`, `groups`) VALUES ( :user_id, :name, :code, TIMESTAMP( :start ), :city, :state, :groups)";
$query = "INSERT INTO {$this->table_name} (`user_id`, `name`, `code`, `start`, `city`, `state`, `groups`) VALUES ( :user_id, :name, :code, TIMESTAMP( :start ), :city, :state, :groups)";
$stmt = $this->connection->prepare($query);
$stmt->bindParam(":user_id", $this->user_id);
$stmt->bindParam(":name", $this->name);
$stmt->bindParam(":code", $this->code);
$stmt->bindParam(":start", $this->start);
$stmt->bindParam(":city", $this->city);
$stmt->bindParam(":state", $this->state);
$stmt->bindParam(":groups", $this->groups);
if ($stmt->execute()) { ........
除“组”外,所有变量都是字符串“组”是一个JSON
出现以下错误:
“日期时间值不正确:'597492800'”
所以问题是,当列是一个时间戳,而我正在插入时间戳时,为什么它会说不正确的datetime
即使当我试图将时间戳设置为int时,它也没有解决问题
$stmt->bindParam(":start", $this->start, PDO::PARAM_INT);
我正在从后端发送时间戳,并希望保存它。我不需要从某种格式转换为时间戳,因为时间戳已经有了正确的格式
我对sql世界有点陌生,这对我来说是一个惊喜。如果你能帮助我,我会非常高兴,因为我已经花了一整天的时间来制作这个相对简单的插件
(Mysql版本:8)
非常感谢 采用date
或datetime
表达式,并且597492800
不是这样的值。类似于'2020-08-12'
的东西将是
错误似乎很明显
不清楚的是你想做什么——因为问题并不能解释这一点。我可能推测您希望将数字转换为日期/时间值。采用date
或datetime
表达式,而597492800
不是这样的值。类似于'2020-08-12'
的东西将是
错误似乎很明显
不清楚的是你想做什么——因为问题并不能解释这一点。我可能推测您希望将数字转换为日期/时间值。时间戳数据类型用于同时包含日期和时间部分的值。时间戳的范围为“1970-01-01 00:00:01”UTC到“2038-01-19 03:14:07”UTC
来源:时间戳数据类型用于同时包含日期和时间部分的值。时间戳的范围为“1970-01-01 00:00:01”UTC到“2038-01-19 03:14:07”UTC
来源:
PDO::PARAM_INT
的类型不正确-应该是PDO::PARAM_STR
。您为$this->start
提供了什么值?请将列更改为INT字段或大约20个字符的文本字段,否则您需要将日期真正转换为unix时间戳“timestamp”只是用于日期和时间度量的通用英文词。您可能认为它是Unix时间的同义词。PDO::PARAM_INT
的类型不正确-它应该是PDO::PARAM_STR
。您为$this->start
提供了什么值?请将列更改为INT字段或大约20个字符的文本字段,否则您需要将日期真正转换为unix时间戳“timestamp”只是用于日期和时间度量的通用英文词。您可能认为它是Unix时间的同义词。很抱歉,我不太清楚。我只需要按原样保存时间戳(1234213421)。不需要转换,因为我从前端发送时间戳,而不是任何其他时间格式。我可能需要的是来自UNIXTIME()的信息。我只是认为FROM_UNIXTIME()用于DATETIME列,用于从时间戳转换。谢谢对不起,我不清楚。我只需要按原样保存时间戳(1234213421)。不需要转换,因为我从前端发送时间戳,而不是任何其他时间格式。我可能需要的是来自UNIXTIME()的信息。我只是认为FROM_UNIXTIME()用于DATETIME列,用于从时间戳转换。谢谢