使用Python将日期时间转换为MySQL格式

0 投票
1 回答
1035 浏览
提问于 2025-04-18 04:09

我正在尝试把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里显示。

我该怎么改变这个呢?

谢谢,

1 个回答

0

你有没有试过用简单的文本编辑器(比如记事本)打开 .csv 文件,看看里面的日期是否正确显示?我猜测是因为 Excel 能识别日期,所以当你打开文件时,它会把日期格式改成默认的样式。如果你用文本编辑器打开 .csv 文件检查一下,你会发现你的代码其实已经把日期格式化得很好了。

默认情况下,Excel 的日期格式是根据你在控制面板里设置的格式来的,你可以在控制面板里更改默认的日期格式,这样 Excel 的格式也会跟着变。

你可以按照这里的说明来改变 Excel 的日期格式。

  1. 选择你想要格式化的单元格。
  2. 按下 CTRL+1。
  3. 在“格式单元格”对话框中,点击“数字”标签。
  4. 在类别列表中,选择“日期”。

如果你看到的格式不符合你的需求,你可以在这个菜单里创建一个自定义的日期格式。详细信息可以查看这里

撰写回答