使用str_to_date将mysql插入到windows批处理中

时间:2013-02-20 14:58:55

标签: mysql batch-file

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

1 个答案:

答案 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字符串。要做到这一点非常困难。