получение правильного формата даты из результатов поиска SQL (datetime.datetime)

Я впервые использую cx_oracle. Частью моего проекта является создание поисковой системы, которая обрабатывает запросы «SELECT FROM..» и отображает их. Это для поиска информации о пациенте и назначенных ему/ей тестах. Я подумал, что было бы также неплохо вернуть назначенные даты тестов.

Вот что я исполняю:

searchPatientName = "SELECT b.PATIENT_NO, a.NAME, c.TEST_NAME, b.TEST_DATE, b.RESULT FROM patient a, test_record b, test_type c WHERE b.TYPE_ID = c.TYPE_ID AND b.PATIENT_NO = a.HEALTH_CARE_NO AND a.NAME = :patient_name"

patientName = "Vera Fuselier"
search.execute(searchPatientName, patient_name=patientName)

rows = search.fetchall()                    
for row in rows:
    print(row)
break

Результат, который я получаю, - это то, что я хочу для проекта, но дата - это не то, что я хочу.

 (100103, 'Vera Fuselier', 'Blood Test', datetime.datetime(2012, 8, 30, 0, 0), 'Normal')
 (100103, 'Vera Fuselier', 'MRI', datetime.datetime(2014, 11, 30, 0, 0), 'Sclerosis')

Обратите внимание, что дата отображается не так, как я хочу (с datetime.datetime), и я не могу найти способ исправить это.

Я использовал это безрезультатно: получение полей даты из оракула в правильном формате с помощью Python и cx-oracle

Как я могу получить дату для отображения в формате, например: «12-08-30»?


person IC2D    schedule 11.11.2014    source источник
comment
Также знайте, что я впервые использую python.   -  person IC2D    schedule 11.11.2014
comment
это помогло? тогда пожалуйста подтвердите ответ   -  person muthan    schedule 25.11.2014


Ответы (1)


datetime - это объект даты Python, с которым вы можете получить любой формат, который вы хотите, в вашем случае вы можете получить свой формат с помощью:

import datetime
row[3].strftime('%y-%m-%d')

Теперь пояснение происходящего. С помощью strftime() вы можете получить строку даты или времени из вашего объекта Datetime. с '%y-%m-%d' я его форматировал.

row[3] должен быть вашим элементом dateobject.

%y возвращает год с двумя цифрами, такими как 14 для 2014 года. Если вы хотите весь год, вы должны ввести %Y

%m возвращает номер месяца, а %d номер дня.

есть также такие параметры, как день недели, название месяца и т. д.

вы можете прочитать об этом в документах

Итак, теперь ваш код должен выглядеть так:

import datetime

#your code to read the file

for row in rows:
    row[3] = row[3].strftime('%y-%m-%d')
    print(row)

#some other code
person muthan    schedule 11.11.2014
comment
когда я пытался использовать приведенный выше код, он говорит: AttributeError: объект 'str' не имеет атрибута 'strftime'. Не могли бы вы помочь с этим сообщением об ошибке? - person Dileep; 14.03.2020
comment
strftime — это метод объекта datetime. Если вы попытаетесь выполнить его в строке, это не сработает. - person muthan; 16.03.2020