【问题标题】:Converting datetime to be mysql format using python使用python将日期时间转换为mysql格式
【发布时间】:2014-06-10 12:58:37
【问题描述】:

我正在尝试将 Excel 中的日期格式转换为可以读取到 MySQL 数据库中的格式。我正在使用 python 处理日期列,将其导出回 csv 文件,然后将其转储到 MySQL 表中。

日期列如下所示:

Date
6/10/13
6/17/13
6/24/13

我希望它采用以下格式:2013-06-10 或 ("%Y-%m-%d")

这是我的代码:

import datetime
import csv

def read(filename):
  new_date=[]

  cr = csv.reader(open(filename,"rU").readlines()[1:], dialect='excel')
  for row in cr:
    # print row[0]
    cols=datetime.datetime.strptime(row[0] , "%m/%d/%y" )
    newcols=cols.strftime("%Y-%m-%d")
    # print newcols
    new_date.append(newcols)
  print new_date[0]
  with open('new_file.csv', 'wb') as f:
    writer = csv.writer(f)
    for date in new_date:
        writer.writerow([date])

代码运行,但是当我打开 new_file.csv 时,日期列会自动恢复为 excel 中的旧格式。

我该如何改变这个?

谢谢,

【问题讨论】:

  • 我认为这是意料之中的。您对 new_file.csv 的输出是正确的,但 Excel 识别出您正在提供日期,并根据其默认日期格式显示它。如果您要导入 MySQL 的是 CSV 文件,我会说您走在正确的轨道上,无需担心 Excel 如何显示内容。
  • 好的,只是想知道,我可以将它写回同一个文件,而不是写入一个新文件,然后只替换日期列中的日期格式吗?
  • 这个问题在这里得到解答:stackoverflow.com/questions/16020858/…

标签: python mysql date datetime csv


【解决方案1】:

您是否尝试过在简单的文本编辑器(例如记事本)中打开 .csv,以查看日期是否正确打印到该文件?我的猜测是,能够识别日期的 Excel 只是在您打开文件时将其重新格式化为默认日期格式,如果您在简单的文本编辑器中打开 .csv 文件进行检查,您会看到您的代码已正确重新格式化 csv 中的日期。

(默认情况下,Excel 会按照您在控制面板中指定的格式设置日期,您可以在控制面板中更改默认日期格式以更改 Excel 的默认格式。)

您可以更改 Excel 格式化日期的方式as described here in the documentation

  1. 选择要设置格式的单元格。
  2. 按 CTRL+1。
  3. 在“设置单元格格式”框中,单击“数字”选项卡。
  4. 在类别列表中,单击日期。

如果您看到的格式不存在,您可以从此菜单创建自定义日期格式。详情here.

【讨论】:

  • 即使在格式框中,也有一些选项可以更改日期格式,但没有选项可以使其成为 MySQL 接受的格式。
  • 有关如何创建自定义日期格式的信息,请参阅我的答案最后一句话中的链接。但是,只要 .csv 文件中的内容正确,我认为您不需要关心 Excel 如何显示内容。我会在文本编辑器中打开它,而不是 Excel,以检查日期格式。
猜你喜欢
  • 2015-03-23
  • 1970-01-01
  • 1970-01-01
  • 2019-09-29
  • 1970-01-01
  • 2011-03-05
  • 2010-10-15
  • 1970-01-01
相关资源
最近更新 更多