我需要用windows批处理(.bat)将带有日期的数据从一个表转到另一个表。

SET thedate='02/02/13'
mysql -e "INSERT INTO dest select str_to_date($thedate,'%d/%m/%Y') from source" thebase -uroot -ppassword`"

当我将.bat文件拖动到cmd窗口时,窗口显示我的代码为:
SET thedate='02/02/13'
mysql -e "INSERT INTO dest select str_to_date($thedate,'m/Y') from source" thebase -uroot -ppassword"

INSERT已更改为%d/%m/%Y,因此在dest表中得到空值。当我直接在phpmyadmin中运行这个查询时,它运行得很好。
我使用xampp 18.1apache/2.4.3(Win32)OpenSSL/1.0.1cphp/5.4.7

最佳答案

在Windows批处理中,变量的语法是%foo%,而不是$foo。你可能把它和巴什搞混了。像这样的:
$thedate不是变量
%d/%被视为未设置的变量
d/中的%被视为不匹配的变量分隔符并被忽略
如果复制它,则可以转义%Y

SET thedate='02/02/13'
echo %thedate%,'%%d/%%m/%%Y'

... 印刷品:
'02/02/13','%d/%m/%Y'

如果可能的话,我建议您不要通过命令行解释器编写SQL字符串。很难把它弄对。

关于mysql - mysql插入带有str_to_date的Windows批处理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14982925/

10-15 08:27