从SQL搜索结果中获取正确的日期格式(datetime.datetime)

时间:2014-11-11 04:03:51

标签: python oracle python-3.x cx-oracle

这是我第一次使用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),我无法找到解决此问题的方法。

我一直用这个无济于事:getting date fields from oracle in correct format using Python and cx-oracle

如何以例如'12 -08-30'的格式显示日期?

1 个答案:

答案 0 :(得分:3)

datetime是python的日期对象,您可以获得所需的任何格式 在您的情况下,您可以使用以下格式获取格式:

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

现在澄清发生了什么。使用strftime(),您可以从Datetime对象中获取日期或时间字符串。与'%y-%m-%d'我形成了它。

row[3]应该是你的dateobject元素。

%y返回2014年的14等2位数年份。如果您想要全年,则必须输入%Y

%m返回月份数和%d天数。

还有工作日,月份名称等选项。

您可以在docs

中了解相关信息

所以现在你的代码应该是这样的:

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