我需要INSERT
数据,其中包含从一个表到另一个具有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"
%d/%m/%Y
已更改为m/Y
,因此我在表格中获取空值。当我直接在phpmyadmin中运行此查询时,它运行良好。
我使用xampp 18.1 Apache / 2.4.3(Win32)OpenSSL / 1.0.1c PHP / 5.4.7
答案 0 :(得分:1)
在Windows批处理中,变量的语法为%foo%
,而不是$foo
。你可能会把它与bash混为一谈。就这样:
$thedate
不是变量%d/%
被视为未设置的d/
变量%
中的%Y
被视为不匹配的变量分隔符并被忽略如果您复制它,可以转义%
:
SET thedate='02/02/13'
echo %thedate%,'%%d/%%m/%%Y'
...打印:
'02/02/13','%d/%m/%Y'
如果可能的话,我建议你不要通过命令行解释器编写SQL字符串。要做到这一点非常困难。