Я получаю значение даты из базы данных DB2, используя объекты ADODB. Эта дата иногда устанавливается на 01.01.00. Это недопустимая дата и время в SQL Server. Мне нужно проверить это значение и установить допустимую дату SQL Server (например, 01.01.1900). Объект, поступающий из ADODB, выглядит как time.struct_time
. Как лучше всего получить 1/1/0001
в качестве объекта time.struct_time
и проверить его на равенство с тем же значением, полученным из базы данных DB2?
EDIT:
Так что я понял немного больше о том, что происходит. Я уже попробовал то, что предложил d0nut, но сравнение все равно не получилось. При печати того, что возвращает time.strptime('1/1/0001', '%d/%m/%Y')
, вы получаете 1/1/2001
, а не 1/1/0001
. Когда я пытаюсь вызвать time.asctime(timeFromDb2)
(даже с действительными значениями даты из БД), я получаю это сообщение об исключении: argument must be 9-item sequence, not time
. Я предполагаю, что объект time
, который я получаю из БД, недействителен, но поскольку рассматриваемый скрипт ничего не делает с ним, кроме как передает его другому объекту ADODB Recordset, подключенному к SQL Server, все работает. У кого-нибудь есть предложения о том, куда идти отсюда? Код, который извлекает дату из DB2 и сохраняет ее в БД SQL Server, вставлен ниже. Это работало в течение многих лет до сегодняшнего дня, когда мы начали получать значение 1/1/0001
от DB2. объекты Inventory
и Coils
создаются с помощью вызова win32com.client.Dispatch("ADODB.Recordset")
self.Inventory.Fields("promised_date").Value = self.Coils.Fields("csaxdz").Value