1

我需要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因此我在表 dest 中获得空值。当我直接在 phpmyadmin 中运行此查询时,它运行良好。

我使用 xampp 18.1 Apache/2.4.3 (Win32) OpenSSL/1.0.1c PHP/5.4.7

4

1 回答 1

1

在 Windows 批处理中,变量的语法是%foo%,而不是$foo。您可能将它与 bash 混淆了。像这样:

  • $thedate不是变量
  • %d/%被认为是未设置的d/变量
  • %in被认为是不匹配的%Y变量分隔符并被忽略

%如果你复制它,你可以逃脱:

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

... 印刷:

'02/02/13','%d/%m/%Y'

如果可能,我建议您不要通过命令行解释器编写 SQL 字符串。很难做到正确。

于 2013-02-20T15:24:13.043 回答