我需要用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/