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 无法更改列的日期格式的主要内容,如果未能解决你的问题,请参考以下文章
无法将日期选择器添加到 C# .NET gridview 单元格
用于比较具有包含日期的单元格的列并将特定文本粘贴到另一列的 Vba 代码