【问题标题】:Date format is changing when i extracting data from SQL to excel - how to stop the auto conversion当我将数据从 SQL 提取到 excel 时,日期格式正在发生变化 - 如何停止自动转换
【发布时间】:2021-11-08 01:23:55
【问题描述】:

当我使用下面的 python 代码从 SQL 中提取数据到 excel 时,excel 文件中的日期格式会自动更改。但是当我通过手动复制粘贴 SQL 结果时,没有发生日期格式问题。正确的格式是“2021-08-03 07:13:05.483”

SQL 中的日期格式:2021-08-03 07:13:05.483 excel 中的日期格式:03-08-2021 7.13.05 AM

import pyodbc
import pandas as pd
import datetime

cnxn = pyodbc.connect("Driver={SQL Server};SERVER=xxxx;UID=xxxx;PWD=xxxx")

print("\nStarted data extraction from sql server..!\n")

with open('input.txt', 'r') as file:
     input_lines = [line.strip() for line in file]


with open('file_name.txt', 'r') as file:
     file_name_lines = [line.strip() for line in file]


for i, iter in zip(input_lines, file_name_lines):
    pd.read_sql(i,cnxn).to_excel('{}.xlsx'.format(iter), index=False)
    print(iter,' is Done')

【问题讨论】:

    标签: python sql pandas pyodbc


    【解决方案1】:

    选择显示不正确的单元格,然后单击Format Cells,然后单击Custom 并添加以下内容:

    yyyy-mm-dd hh:mm:ss.000
    

    现在,它应该按照上面的模式进行格式化。发生这种情况是因为 SQL 使用与 MS Excel 不同的日期格式。查看更多here

    【讨论】:

      【解决方案2】:

      Excel 正在使用您的 Windows 用户配置文件的日期格式。如果您想更改 Excel 显示日期的默认方式,请更改您的区域设置,否则按照上面@Theorist 的答案的建议进行操作,并自定义格式工作表中的单元格范围。顺便说一句,这同样适用于数字和货币格式 - 默认情况下,Excel 会根据您的环境设置方式执行它认为您想要的操作。

      【讨论】:

      • 有没有办法通过sql查询或python解决这个问题?因为多人会使用这个脚本。在这种情况下,不可能为每个人更改单元格格式或在 Excel 中设置。
      • @Chandru:不幸的是,答案是否定的。这不是 Python 问题或 SQL 问题,而是 Excel 问题。 Excel 将有效日期作为日期类型获取并根据用户的环境设置显示。这是我们无法改变的行为。您的选择是找到一种在电子表格创建期间在单元格级别显式设置日期格式的方法,或者将日期数据强制为字符串(在 Excel 中丢失日期算术)。在 Excel 中,您可以通过输入 '2021-08-12... 手动实现此目的(注意前导单引号)。
      猜你喜欢
      • 1970-01-01
      • 2011-05-23
      • 2020-03-26
      • 2011-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多