在 INSERT INTO 语句中使用 FROM_UNIXTIME

Using FROM_UNIXTIME in an INSERT INTO statement

是否可以在 MySQL INSERT INTO 语句中使用 FROM_UNIXTIME 方法,如下所示?

INSERT INTO mycapacity (timeint, time, datetime) VALUES (FROM_UNIXTIME(20191120085412, '%D %M %Y %h:%i:%s %x'), '20 Nov 2019 16:54:12 GMT', '2019-11-20 08:54:12');

如果是这样,FROM_UNIXTIME 是否必须用引号引起来,因为列类型是 varchar?

MySQL 更喜欢所有内容都在 ISO 8601 format, or YYYY-MM-DD HH:MM:SS 中,而不是一些任意文本。使用本机 DATE、DATETIME 列存储数据。

FROM_UNIXTIME() 以正确的格式发出它,没有格式说明符应该没问题。值得注意的是,这个函数只接受 UNIX Epoch Time values,而不是像 20191112... 这样无效的任意日期字符串。比如现在时间是1574274411

如果您有一个整数编码的日期时间值,那么 FROM_UNIXTIME 将无济于事,您必须使用 STR_TO_DATE 解析它,如:

STR_TO_DATE('2019112', '%Y%m%d')

请注意,尚不清楚该数字中到底发生了什么,所以余数的格式需要用额外的说明符来解决,如果可以的话。

请记住,任何名称为 reserved keywords 的列都必须进行转义:

INSERT INTO mycapacity (timeint, `time`, `datetime`) VALUES (...)

在您的问题中您还不清楚您打算为每一列使用什么格式,因此指定架构将有助于缩小答案范围。