Python - pandas 将 MS SQL 日期转换为 nvarchar
Python - pandas converts MS SQL date to nvarchar
我的 python 代码在示例 MS SQL 服务器查询上运行 read_sql...
方法。
其中一列 - system_type_name
- 指示类型 date
而在 SSMS 中为 运行。
使用以下代码执行的查询给我 nvarchar(10)
类型:
Config.json:
{"Drive": "SQL Server",
"Server": "server_name",
"Database":......
"UID":........
"PWD":......}
代码:
import pandas as pd
import pyodbc
query = '''
DECLARE @dt
DECLARE @sql nvarchar(max) = N'procedure_name 0, ''1900-01-01'', @dt';
SELECT system_type_name FROM sys.dm_exec_describe_first_result_set(@sql, NULL, 0) '''
cnxn = connect_to_db("config.json", False)
src = pd.read_sql(query, cnxn)
print(src)
df 结果:
num_legs
system_type_name nvarchar(10)
bug/issue pandas 是 date
类型的某种转换吗?
古老的“SQL 服务器”驱动程序 return 是多个 T-SQL 类型的字符串表示形式。较新的 ODBC 驱动程序 return 更具体的类型。例如:
# with DRIVER=SQL Server
#
print(type(crsr.execute("SELECT CAST('2022-01-17' AS DATE) AS d").fetchval()))
# <class 'str'>
# with DRIVER=ODBC Driver 17 for SQL Server
#
print(type(crsr.execute("SELECT CAST('2022-01-17' AS DATE) AS d").fetchval()))
# <class 'datetime.date'>
我的 python 代码在示例 MS SQL 服务器查询上运行 read_sql...
方法。
其中一列 - system_type_name
- 指示类型 date
而在 SSMS 中为 运行。
使用以下代码执行的查询给我 nvarchar(10)
类型:
Config.json:
{"Drive": "SQL Server",
"Server": "server_name",
"Database":......
"UID":........
"PWD":......}
代码:
import pandas as pd
import pyodbc
query = '''
DECLARE @dt
DECLARE @sql nvarchar(max) = N'procedure_name 0, ''1900-01-01'', @dt';
SELECT system_type_name FROM sys.dm_exec_describe_first_result_set(@sql, NULL, 0) '''
cnxn = connect_to_db("config.json", False)
src = pd.read_sql(query, cnxn)
print(src)
df 结果:
num_legs
system_type_name nvarchar(10)
bug/issue pandas 是 date
类型的某种转换吗?
古老的“SQL 服务器”驱动程序 return 是多个 T-SQL 类型的字符串表示形式。较新的 ODBC 驱动程序 return 更具体的类型。例如:
# with DRIVER=SQL Server
#
print(type(crsr.execute("SELECT CAST('2022-01-17' AS DATE) AS d").fetchval()))
# <class 'str'>
# with DRIVER=ODBC Driver 17 for SQL Server
#
print(type(crsr.execute("SELECT CAST('2022-01-17' AS DATE) AS d").fetchval()))
# <class 'datetime.date'>