soapui jdbc:java.sql.SQLException:数据类型不匹配。(2015-02-04)

soapui jdbc:java.sql.SQLException:数据类型不匹配。(2015-02-04),sql,jdbc,groovy,soapui,Sql,Jdbc,Groovy,Soapui,我需要使用sql查询数据库从soap每天自动。 对数据库的查询具有当前日期 因此,我有以下几点: 1我使用groovy将当前日期设置为属性: def dateTime= new Date() setProperty.setPropertyValue('currDate', String.format("%tF", dateTime, new Date())) 2在jdbc请求中,我创建了相应的属性,并尝试在查询中使用它: select * ... where SENDDATE = :D

我需要使用sql查询数据库从soap每天自动。 对数据库的查询具有当前日期

因此,我有以下几点:

1我使用groovy将当前日期设置为属性:

def dateTime= new Date()    
setProperty.setPropertyValue('currDate', String.format("%tF", dateTime, new Date()))
2在jdbc请求中,我创建了相应的属性,并尝试在查询中使用它:

select * ...
where SENDDATE = :Date
但尝试执行查询会导致数据类型不匹配

2015-02-04 17:17:54 - Error getting response; java.sql.SQLException: Data type mismatch. (2015-02-04)
所以,我的问题是:在这种情况下,如何避免不匹配

注:查询工作正常,直接填写日期为“2015-02-02”


Dmitry

您可以使用SQL计算日期,然后它将始终采用正确的格式:

select * ...
where SENDDATE = now()

正如@SiKing建议您可以使用SQL函数一样,请注意,如果您使用的是sqlserver而不是现在,则必须使用GETDATE:

无论如何,如果您想使用参数而不是函数,并且有时字符串似乎不能作为日期使用,您可以尝试使用格式函数将字符串转换为日期,因为我不清楚您使用的是什么DB,我将向您展示以下情况:

神谕

mySql

sqlserver

sqlserver的情况就不那么直观了,20是yyyy-mm-dd hh:mi:ss的格式,所以我不确定您是否可以转换2015-02-04,也许您需要在groovy中附加hh:mi:ss作为2015-02-04 00:00:00


希望这有帮助,

首先,确保您的mysql字段数据类型是相关的,应该是“日期”,而不是时间、文本、varchar等

关于groovy格式化方式,以下是如何:

import groovy.time.*
def dateTime= new Date().format('yyyy/MM/dd') 
testRunner.testCase.testSteps["Properties"].setPropertyValue('currDate',dateTime.toString())
JDBC mysql引擎查询:

注:

数据库中的格式将是标准格式,如2015-02-05 如果您还想获得时间,可以使用类似“yyyy/MM/dd HH:MM:ss”的格式,在这种情况下,mysql字段数据类型必须是“datetime”。
select * ...
where SENDDATE = TO_DATE(:Date, 'yyyy-mm-dd')
select * ...
where SENDDATE = STR_TO_DATE(:Date, '%Y-%m-%d')
select * ...
where SENDDATE = CONVERT(DATETIME,:Date,20)
import groovy.time.*
def dateTime= new Date().format('yyyy/MM/dd') 
testRunner.testCase.testSteps["Properties"].setPropertyValue('currDate',dateTime.toString())
select * ... 
where SENDDATE = '${Properties#currDate}'