select * INTO outfile以错误的格式生成日期

时间:2015-12-14 14:17:47

标签: mysql sql date csv

我使用下面的sql将数据导出到csv文件:

select * INTO outfile 'customer.csv'
    FIELDs terminated by ',' enclosed by '"'
    LINES terminated by '\n'
    from CUSTOMER customer
    where customer.date_created < '2015-10-22 10:00:00';

我在csv中得到了这个结果:

enter image description here

问题是数据无法从此生成的csv导入,因为日期格式与DB不同。

DB日期格式为yyyy-mm-dd hh:mm:ss。此值也将替换为\ n,在导入时也会失败。

如何使用正确的yyyy-mm-dd hh:mm:ss日期格式和空/空值生成csv列?

错误: 日期时间值不正确:&#39; 23/07/2015 11:55&#39;对于列&#39; DATE_CREATED&#39;在第1行 整数值不正确:&#39; \ N&#39;对于列&#39; column_name&#39;在第1行

注意: 我正在使用mysql workbench导入文件。 我不想直接在csv文件中更改格式/数据。

由于

更新: 感谢AdrianBR我意识到我首先使用excel打开文件,这会覆盖日期格式,因此即使使用notepad ++也会显示错误的日期格式。 \ n仍然是个问题。 首次使用notepad ++打开时,它看起来像这样: &#34; 100&#34;,&#34; 0&#34;,&#34; 2015-12-02 10:16:36&#34;,&#34; 2015-12-02 10:16:36& #34;&#34; 0&#34; \ N,

2 个答案:

答案 0 :(得分:2)

问题很可能不是来自mysql。

很可能来自Excel显示的方式,稍后会保存日期。 麻烦:

在文本编辑器(如记事本或记事本++)中打开文件,检查日期是什么样的,如果它是否在ISO中。它可能会没事的。

现在,如果您在Excel中打开它,它将以本地格式显示。

如果您现在保存文件,则可能会使用excel的本地日期格式覆盖ISO日期格式,使其不再是有效的可导入mysql日期。

道德:在处理数据时不要使用Excel,只能用它来显示图表。 Excel以最意想不到的方式对您的数据进行假设并对其进行混乱。还记得1.19增值税税率吗? Excel似乎认为它与1月19日相同。那个整数ID? Excel认为最好用科学记数法写它并将其四舍五入到前4位数。那个Iso日期? Excel认为你最好猜测哪个是月份,哪个是日期。小数点?当然你想要逗号为十进制,而点为千位分隔符。 FTFY!

答案 1 :(得分:0)

可以明确指定列,并在选择列表中包含格式,如下所示:

TO_CHAR(mydate,&#39; yyyy-mm-dd hh24:mi:ss&#39;)

编辑:

如:

SELECT my_id, my_val1, TO_CHAR( mydate, 'yyyy-mm-dd hh24:mi:ss' )
FROM mytable