背景
开发接口返回的时间数据格式和我从数据库中获取的数据格式不一致
开发的接口返回,时间格式中带有一个T
{
"status": 200,
"countryCode": "US",
"currencyCode": "USD",
"data": "2022-12-15T03:35:00.523-0800"
}
而我从数据库中获取的时间是没有T的,例如这样的
2022-12-19 00:40:31
时间比较
其中我还需要从数据库获取三个时间字段然后比较大小,去时间最大的
1、我首先是使用 Convert Date 全部转化为时间戳然后统一比较
${date0} Convert Date ${newRenew_maxUpdateTime} epoch
转化后的时间戳长这样,数值越大,时间越大
1671046468.92
然后我使用Set Variable If 函数挑取时间最大的并同时赋值
${date} Set Variable If ${date1}>${date2} ${date1} ${date2}
时间截取
使用字符串分割函数Split String 不加分隔字符的话就是按照空格分隔
${dateResponse} Split String ${response} T
2022-12-15T03:35:00.523-0800 截取前面的年月日
${dateList} Split String ${date}
2022-12-19 00:40:31 截取前面的年月日
最后可以比较两个相同格式的年月日,因为我是比较两个年月日一样的情况,所以我直接比较字符串相等就可以了
如果是比较大小,那可以进行年月拆分,然后按照拆分的年月日时分秒来比较,不一样就循环停止
CAPI.URL GET /api/renew/opportunity/latestUpdateTime
${response} CAPI.GetRequest /stellr-renewal-engine/api/renew/opportunity/latestUpdateTime /data \ ${api_url}
log ${response}
${newRenew_maxUpdateTime} MySql.GetAllQueryResult SELECT update_datetime from stellr_renew_opportunity where is_latest = 1 and delete_id is null and country_code = 'US' ORDER BY update_datetime DESC limit 1 ${solv_db} ${cloudsolv_db} ${solv_port}
${oldRenew_maxUpdateTime} Sybase.GetAllRowQueryResult SELECT top 1 convert(DATETIME,update_date) FROM service_contract_renew WHERE delete_id is NULL and delete_date IS NULL \ order by update_date \ DESC
${oldRenew_maxEntryTime} Sybase.GetAllRowQueryResult SELECT top 1 convert(DATETIME,entry_date) FROM service_contract_renew WHERE delete_id is NULL and delete_date IS NULL \ order by entry_date \ DESC
log ${newRenew_maxUpdateTime}
${date0} Convert Date ${newRenew_maxUpdateTime} epoch
log ${date0}
${date1} Convert Date ${oldRenew_maxUpdateTime[0]} epoch
log ${date1}
${date2} Convert Date ${oldRenew_maxEntryTime[0]} epoch
log ${date2}
${date} Set Variable If ${date1}>${date2} ${date1} ${date2}
${date} Set Variable If ${date}>${date0} ${date0} ${date}
${date} Convert Date ${date} exclude_millis=yes date_format=%m.%d.%Y
${dateList} Split String ${date}
LOG ${dateList[0]}
${dateResponse} Split String ${response} T
LOG ${dateResponse[0]}
Should Be Equal ${dateList[0]} ${dateResponse[0]}
额,这真的是一个比较笨的方法,暂时自己先琢磨了这个笨办法。大家有什么更好的方法一起分享吗