update_time是mysql中的时间戳类型。我想在python中执行以下sql
//double rain[]= new double [1268]; this is the array declared earlier with data in
double maxRAINyear[]= new double [1200];
double temp [] = new double [12];
int arrayCounter = 0;
int count = 0;
for (int c = 36; c < rain.length; c++) {
temp[count] = rain[c];
if (count == 12){
Arrays.sort(temp);
double max = temp[temp.length - 1];
maxRAINyear[arrayCounter] = max;
arrayCounter++;
count = 0;
}
count++;
}
我在python中写这个
select * from test_table where update_time like "%2017-05-11%"
确实得到了结果,但我也得到了这样的警告
sql="select * from test_table where update_time like %s;"
cursor.execute(sql,("%2017-05-11%",))
如何避免警告?
答案 0 :(得分:0)
我认为没有必要添加第一个%
,因此删除第一个%
,它不会再发出警告:
cursor.execute(sql,("2017-05-11%",))
实际上,如果你运行这个sql语句
select * from test_table where update_time like '2017-01-%';
当您使用like
运算符时,它仍会返回警告,您实际上正在进行字符串比较。 update_time
将在运行中转换为字符串,因此,为了避免这种情况,您可以使用cast
函数:
强制转换函数和运算符可以从一个数据转换值 输入另一个。
e.g:
select * from test_table where cast(update_time as char) like '%2017-01-%';
运作良好,不再有警告。事实上,这是一个更好的方法,你可以使用它来使用索引,在这种情况下,日期字符串将被强制转换为 DATETIME ,
select * from test_table where update_time between '2017-05-11 00:00:00' and '2017-05-11 23:59:59';