1

INSERTWindowsバッチ(.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 で null 値を取得します。このクエリを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 に答える