mysql - SQL 插入时间戳问题

标签 mysql sql

我正在尝试将我的 user 表中两列(user_idteam_id)的值插入到 的联结表中公司_团队。但是,我在为 company_team 中的 created_atupdated_at 列插入值时遇到了两次不同的尝试,并且不知道如何工作经过他们。

在第一次尝试中,我只是想用 user 表中等效字段的值更新这两个字段:(注意两个表上的列都是 DATETIME)

INSERT INTO `company_team` (`created_at`,`updated_at`,`user_id`, `company_id`)
SELECT `user_id`, `company_id`, `created_at`, `updated_at`
FROM `user` AS `u`
WHERE `u`.`company_id` IS NOT NULL;

错误:

Incorrect datetime value: '1' for column 'created_at' at row 1

然后我尝试在创建记录时只使用当前日期/时间:

INSERT INTO `company_team` (NOW(),NOW(),`user_id`, `company_id`)
SELECT `user_id`, `company_id`, `created_at`, `updated_at`
FROM `user` AS `u`
WHERE `u`.`company_id` IS NOT NULL;

错误:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NOW(),NOW(),`user_id`, `organization_id`)
SELECT `user_id`, `company_id`, `' at line 1

最佳答案

当您进行插入时,值的名称 无关紧要。它们是按位置匹配的。

所以,我认为您只需要对列重新排序:

INSERT INTO company_team (user_id, company_id, created_at, updated_at)
    SELECT user_id, company_id, created_at, updated_at
    FROM `user` u
    WHERE u.company_id IS NOT NULL;

这会更改 INSERT 端的顺序。也许出于习惯,我将创建日期和更新日期放在末尾——或者通过给它们默认值来自动设置它们。

关于mysql - SQL 插入时间戳问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43277444/

相关文章:

sql - 如何从表中返回一个值的 MAX 和 MIN?

sql - 将表名作为参数传递时如何检查表是否包含任何行?

PHP 反转 MySQL 数据库结果的顺序

php - 如何在mysql中使用存储过程获取问题及其相关标签?

php - 将 MySQL 表数据回显为 HTML

c# - PHP 中的 SQL 更新

sql - "set rs = conn.execute(sql)"实际上是如何工作的?

php - MySQLi 查询默默失败,但在 SQL shell 中成功

php - MySQL 如何避免来自 PHP 的重复条目

php preg_split 不识别空格