我的 python 代碼read_sql...在示例 MS SQL Server 查詢上運行方法。
其中一列 - system_type_name- 表示date在 SSMS 中運行時的型別。

使用以下代碼執行的查詢給了我nvarchar(10)型別:
組態檔:
{"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)
這是熊貓與date型別有關的一些轉換錯誤/問題嗎?
uj5u.com熱心網友回復:
古老的“SQL Server”驅動程式回傳幾個 T-SQL 型別的字串表示。較新的 ODBC 驅動程式回傳更具體的型別。例如:
# 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'>
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/414984.html
標籤:
