Я использую pyodbc для запроса таблицы базы данных SQL Server 2008 со столбцами типа DATE.
Результирующие строки данных содержат строки даты, а не экземпляры python datetime.date или datetime.datetime.
Эта проблема возникает только для столбцов типа DATE;столбцы типа DATETIME обрабатываются правильно и возвращают экземпляр datetime.datetime.
Пример
import pyodbc
from pprint import pformat
db = pyodbc.connect("DRIVER={SQL Server};SERVER=.\\SQLEXPRESS;DATABASE=scratch;Trusted_Connection=yes")
print pformat(db.cursor().execute("select * from Contract").description)
Результаты:
(('id', <type 'int'>, None, 10, 10, 0, False),
('name', <type 'str'>, None, 23, 23, 0, False),
('some_date', <type 'unicode'>, None, 10, 10, 0, True),
('write_time', <type 'datetime.datetime'>, None, 23, 23, 3, False))
Обратите внимание, что some_date столбец указан как строка типа unicode, однако в базе данных этот столбец определен как DATE:
CREATE TABLE dbo.Contract(
id INT NOT NULL,
name VARCHAR(23) NOT NULL,
some_date DATE NULL,
write_time DATETIME NOT NULL)
Это нормально, и как я могу лучше всего исправить это?