STR_TO_DATE()返回NULL

时间:2013-08-08 10:46:21

标签: mysql xml xml-parsing

我查看了有关STR_TO_DATE()的其他问题,他们的解决方案对我的情况不起作用。我也在其他地方阅读并搜索无济于事。

我正在导入以下XML的许多行:

<Game>
  <id>21</id> 
  <GameTitle>Final Fantasy XIII</GameTitle> 
  <ReleaseDate>03/09/2010</ReleaseDate> 
</Game>

<Game>
  <id>31</id> 
  <GameTitle>Heavenly Sword</GameTitle> 
  <ReleaseDate>09/12/2007</ReleaseDate> 
</Game>

使用以下SQL语句:

USE test;
LOAD XML LOCAL INFILE 'C:\\xampp\\mysql\\data\\test.xml'
REPLACE
INTO TABLE games
ROWS IDENTIFIED BY '<Game>'
SET ReleaseDate = STR_TO_DATE(@ReleaseDate, '%c/%e/%Y');

GameTitle和ID完全导入。我尝试使用%m和%d并确保ReleaseDate列是DATE数据类型。所有行都在ReleaseDate列中写入NULL。

MySql正在返回

2466 row(s) affected, 64 warning(s): 1265 Data truncated for column 'ReleaseDate' 
at row 1 1265

提前感谢您的帮助。 StackOverflow解决了我所遇到过的所有问题,甚至不用问。

1 个答案:

答案 0 :(得分:2)

您需要为STR_TO_DATE使用的变量指定一些内容,例如

LOAD XML LOCAL INFILE 'C:\\xampp\\mysql\\data\\test.xml'
REPLACE
INTO TABLE games (id, GameTitle, @var1)
ROWS IDENTIFIED BY '<Game>'
SET ReleaseDate = STR_TO_DATE(@var1, '%c/%e/%Y');

请注意SET

的语法中描述了LOAD XML中{{1}}的语法