2017-04-14 56 views
0

什么是我的自动化测试返回此查询见下文:SQL:日期时间更改为精确的字符串返回

Select visit_date 
from patient_visits 
where patient_id = '50' 
AND site_id = '216' 
ORDER by patient_id 
DESC LIMIT 1 

08:52:48.406 DEBUG执行:从patient_visits 其中选择VISIT_DATE patient_id = '50' 和SITE_ID = '216' 通过patient_id DESC ORDER LIMIT 1 08:52:48.416 TRACE返回值:[(datetime.date(2017,2,17),)]

当我运行这在工作台我得到

2017-02-17 

我如何使查询返回这个而不是上面的datetime.date位。一些格式需要?

+0

你使用什么样的数据库/方言?我认为你应该改变“sql”标签为特定于数据库的标签,因为你的日志是指特定的实现 - 如“sql-server”,“postgresql”,“mysql”,“oracle”,...也许你需要添加一些关于您用来访问数据库的语言和数据库提供程序或库的信息。 – andreim

+0

其postgres,道歉。使用机器人框架DatabaseLibrary。 – user3303266

回答

0

从数据库中得到的是python的datetime.date对象 - 这是由于db连接器驱动程序将数据库记录转换为对应的python对象。相信我,这比用纯净的字符串更好,用户以后必须解析和投射。

成像这个查询的结果存储在一个变量${record},有几件事情可以得到它,以你想要的形式。
首先,响应(几乎总是)元组列表;在你的情况下,将永远是一个单一的记录,去的第一个列表的成员,其第一个元组成员:

${the_date}= Set Variable ${record[0][0]} 

现在{the_date}是datetime.date对象;至少有两种方法来获取其字符串表示。

1)随着strftime()(在Python的方式):

${the_date_string}= Evaluate $the_date.strftime('%Y-%m-%d') datetime 

here's a link for the strftime's directives

2)使用实际上它是一个普通的对象,请访问其属性和构建的结果,只要你愿意:

${the_date_string}= Set Variable ${the_date.year}-${the_date.month}-${the_date.day} 

请注意,这种方式,你肯定会放松月份的前导零和天。

相关问题