错误1582(42000)调用本地函数“FROM_UNIXTIME”时的参数计数不正确

当我尝试在下面的查询中使用bash转换时间戳

docker exec compose_TSOwncloudMySQL_1 mysql -h localhost -udockerdev -pdocker owc -e " SELECT DATE_FORMAT(FROM_UNIXTIME(`timestamp`), '%Y%m%d timestamp%h:%i:%s') AS 'date_formatted', oc_ldap_user_mapping.ldap_dn, oc_activity.subject, oc_activity.file, oc_activity.subjectparams FROM oc_activity INNER JOIN oc_ldap_user_mapping ON oc_activity.user = oc_ldap_user_mapping.owncloud_name ORDER BY oc_activity.timestamp;"> /home/dockerdmz/tsowncloud/log_owc/owc_$DATE.log` 

我有这个错误:

 ERROR 1582 (42000) at line 2: Incorrect parameter count in the call to native function 'FROM_UNIXTIME' 

当我在MySQLpipe理页面运行这个查询时,效果很好。

 SELECT DATE_FORMAT(FROM_UNIXTIME(`timestamp`), '%Y%m%d %h:%i:%s') AS 'date_formatted', oc_ldap_user_mapping.ldap_dn, oc_activity.subject, oc_activity.file, oc_activity.subjectparams FROM oc_activity INNER JOIN oc_ldap_user_mapping ON oc_activity.user = oc_ldap_user_mapping.owncloud_name ORDER BY oc_activity.timestamp; 

当我运行这个bash代码(没有时间戳转换),它运作良好

 Docker exec compose_TSOwncloudMySQL_1 mysql -h localhost -udockerdev -pdocker owc -e " SELECT oc_activity.timestamp, oc_ldap_user_mapping.ldap_dn, oc_activity.subject, oc_activity.file, oc_activity.subjectparams FROM oc_activity INNER JOIN oc_ldap_user_mapping ON oc_activity.user = oc_ldap_user_mapping.owncloud_name ORDER BY oc_activity.timestamp;"> /home/dockerdmz/tsowncloud/log_owc/owc_$DATE.log 

啊。 这是一个反衬的东西。

当你使用bash的时候,试着用反斜杠来反斜杠,像这样。

  -e " SELECT DATE_FORMAT(FROM_UNIXTIME(\`timestamp\`), ... 

专业提示:避免对列名或表名使用保留字(例如timestamp )。 这样你就不必在查询中把它们包装起来,你可以在不同的上下文中使用相同的查询(bash,php等)。