2013-02-20 6 views
1

Мне нужно INSERT данные с датой из таблицы в другую таблицу с пакетом окон (.bat).mysql insert into with windows batch with str_to_date

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

ответ

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 через интерпретатор командной строки, если это возможно. Это очень сложно понять.