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

Posted

技术标签:

【中文标题】Openoffice-calc 无法更改列的日期格式【英文标题】:Openoffice-calc can't change the date format of a column 【发布时间】:2012-11-17 10:42:29 【问题描述】:

在 openoffice calc 中,我打开一个从 Internet 下载的 csv 文件。

其中一列用于日期。日期格式为 dd/mm/yy。它也左对齐(我认为它保存为文本)。

我想将日期格式修改为 yyyy-mm-dd,以便可以将其放入我创建的 mysql 表中,其中我有一个数据类型为 date 的列(因此它需要我之前提到的格式) .

所以我在 openoffice calc 中选择了“日期”列,并尝试将格式从原来的格式更改为我想要的格式。什么都没有发生。完全没有变化。

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

【问题讨论】:

【参考方案1】:

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

有一个有趣的技巧可以使用搜索和替换来删除这些前导引号。选择您的列,进行搜索和替换,单击更多选项,仅当前选择,使用正则表达式:

search ^(.*)$
replace &

在正则表达式中,这意味着search anything and replace it by itself。在 OO 中,这会删除前导引号。

【讨论】:

【参考方案2】:

你可以只使用 MySQL 的 STR_TO_DATE() 函数:

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')
;

【讨论】:

你确实让我走上了正轨。但仍然有问题。我的 csv 文件有大约 2000 行。它只处理第一行,这些是我得到的错误:Warning (Code 1265): Data truncated for column 'amount_to_vat' at row 1 Error (Code 1411): Incorrect datetime value: '19/12/2011' for function str_to_date Warning (Code 1264): Out of range value for column 'rid' at row 1。还有什么是@date? rid 列也是自动递增的,在 csv 上没有这样的列。有问题吗? 有可能您的线路终止不是'\r\n'?也许只是'\n'? CSV 中不存在rid 没有问题(只需从LOAD DATA 命令的列列表中省略它。@date 只是一个用户变量,上面示例中 CSV 的第一列被分配到其中,因此然后可以将其传递给STR_TO_DATE(),最后用于设置列date_col 你是正确的行终止符。 str_to_date 也解决了这个问题。剩下的唯一警告是:Warning (Code 1264): Out of range value for column 'rid' at row 1。现在它处理所有行,但它不能正确地进行自动增量。在第一行,它将可以获得的最大数字作为 int 放置,然后跳过所有下一行。 最后,代码 1264 警告的问题是我已将 rid 声明为 int(11) 数据类型。但 int 数据类型(有符号)有 10 位。所以我将它设置为 int 而不声明位数并修复它。【参考方案3】:

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

【讨论】:

以上是关于Openoffice-calc 无法更改列的日期格式的主要内容,如果未能解决你的问题,请参考以下文章

如何更改 varchar 数据类型列的日期时间格式

无法将日期选择器添加到 C# .NET gridview 单元格

使用 Excel 更改日期格式

用于比较具有包含日期​​的单元格的列并将特定文本粘贴到另一列的 Vba 代码

Handsontable 相对于下一列的下一个单元格更改单元格颜色

更改DataTable某列的值。C#