Mysql Openoffice calc无法更改列的日期格式

Mysql Openoffice calc无法更改列的日期格式,mysql,format,openoffice.org,openoffice-calc,Mysql,Format,Openoffice.org,Openoffice Calc,在openoffice calc中,我打开从internet下载的csv文件 其中一列是日期。日期格式为dd/mm/yy。它也是左对齐的,我认为它保存为文本 我想将日期格式修改为yyyy-mm-dd,这样我就可以将它放在我创建的mysql表中,其中有一个数据类型为date的列,所以它需要我前面提到的格式 因此,我在openoffice calc中选择列“Date”,并尝试将格式从原来的格式更改为我想要的格式。什么都没有发生。没有任何变化 有什么建议吗?与字符集或类似的东西有什么关系吗?您可以使用

在openoffice calc中,我打开从internet下载的csv文件

其中一列是日期。日期格式为dd/mm/yy。它也是左对齐的,我认为它保存为文本

我想将日期格式修改为yyyy-mm-dd,这样我就可以将它放在我创建的mysql表中,其中有一个数据类型为date的列,所以它需要我前面提到的格式

因此,我在openoffice calc中选择列“Date”,并尝试将格式从原来的格式更改为我想要的格式。什么都没有发生。没有任何变化


有什么建议吗?与字符集或类似的东西有什么关系吗?

您可以使用MySQL的函数:

LOAD DATA INFILE '/path/to/file.csv'
  INTO TABLE my_table
  CHARACTER SET utf8
  FIELDS
    TERMINATED BY ','
    OPTIONALLY ENCLOSED BY '"'
  LINES
    TERMINATED BY '\r\n'
  IGNORE 1 LINES
  (@date, col_a, col_b, etc)
SET
  date_col = STR_TO_DATE(@date, '%d/%m/%Y')
;

您可以使用MySQL的函数:

LOAD DATA INFILE '/path/to/file.csv'
  INTO TABLE my_table
  CHARACTER SET utf8
  FIELDS
    TERMINATED BY ','
    OPTIONALLY ENCLOSED BY '"'
  LINES
    TERMINATED BY '\r\n'
  IGNORE 1 LINES
  (@date, col_a, col_b, etc)
SET
  date_col = STR_TO_DATE(@date, '%d/%m/%Y')
;

如果选择一个单元格并查看顶部“公式”框中的单元格内容,它是否以单引号开头?也就是说,它是作为文本导入的。尝试删除引号,该日期会突然变为日期,并使用您对该单元格的显示首选项

有一个有趣的黑客删除这些领先的引用使用搜索和替换。选择您的列,执行搜索和替换,单击“更多选项”,仅限当前选择,使用正则表达式:

search ^(.*)$
replace &

在regexp中,这意味着搜索任何内容并自行替换。在OO中,这将删除前导引号。

如果选择一个单元格并查看顶部“公式”框中的单元格内容,它是否以单个引号开头?也就是说,它是作为文本导入的。尝试删除引号,该日期会突然变为日期,并使用您对该单元格的显示首选项

有一个有趣的黑客删除这些领先的引用使用搜索和替换。选择您的列,执行搜索和替换,单击“更多选项”,仅限当前选择,使用正则表达式:

search ^(.*)$
replace &

在regexp中,这意味着搜索任何内容并自行替换。在OO中,这会删除前导引号。

在导入/打开对话框中,你必须告诉它列是一个日期,然后一切正常。

在导入/打开对话框中,你必须告诉它列是一个日期,然后一切正常。

你肯定让我走上了正确的轨道。但还是有问题。我的csv文件大约有2000行。它只处理第一行,以下是我得到的错误:警告代码1265:第1行“amount_to_vat”列的数据被截断错误代码1411:不正确的日期时间值:函数str_to_date的“19/12/2011”警告代码1264:第1行“rid”列的值超出范围。还有日期是几号?rid列也是自动递增的,在csv上没有这样的列。这是个问题吗?您的线路终止可能不是'\r\n'吗?也许只是“\n”?在CSV中缺少rid没有问题,只需在LOAD DATA命令的列列表中忽略它即可@date只是一个用户变量,上面示例中CSV中的第一列被分配到该变量中,这样就可以将其传递给STR_to_date,并最终用于设置列date_col。对于行终止符,您是正确的。同时,到目前为止的stru也解决了这个问题。剩下的唯一警告是:警告代码1264:第1行“rid”列的值超出范围。现在它处理所有的行,但不能正确地执行自动递增。在第一行,它将它能得到的最大值作为int,然后它跳过所有下一行。最后,代码1264警告的问题是我已将rid声明为int11数据类型。但签名的int数据类型有10位数字。所以我把它设为int,但并没有声明数字的数目,这就解决了它。你们肯定让我走上了正确的轨道。但还是有问题。我的csv文件大约有2000行。它只处理第一行,以下是我得到的错误:警告代码1265:第1行“amount_to_vat”列的数据被截断错误代码1411:不正确的日期时间值:函数str_to_date的“19/12/2011”警告代码1264:第1行“rid”列的值超出范围。还有日期是几号?rid列也是自动递增的,在csv上没有这样的列。这是个问题吗?您的线路终止可能不是'\r\n'吗?也许只是“\n”?在CSV中缺少rid没有问题,只需在LOAD DATA命令的列列表中忽略它即可@date只是一个用户变量,上面示例中CSV中的第一列被分配到该变量中,这样就可以将其传递给STR_to_date,并最终用于设置列date_col。对于行终止符,您是正确的。同时,到目前为止的stru也解决了这个问题。剩下的唯一警告是:警告代码1264:第1行“rid”列的值超出范围。现在它处理所有的行,但不能正确地执行自动递增。在第一行,它将它能得到的最大值作为int,然后它跳过所有下一行。最后,代码1264警告的问题是我已将rid声明为int11数据类型。但是int数据类型signe d有10个数字。所以我将它设置为int,而不声明数字的数目,这就解决了它。