如何在python中使用与datetime字段一样的查询

时间:2017-05-11 12:28:28

标签: python mysql

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%",))

如何避免警告?

1 个答案:

答案 0 :(得分:0)

我认为没有必要添加第一个%,因此删除第一个%,它不会再发出警告:

cursor.execute(sql,("2017-05-11%",))

实际上,如果你运行这个sql语句

select * from test_table where update_time like '2017-01-%';

当您使用like运算符时,它仍会返回警告,您实际上正在进行字符串比较。 update_time将在运行中转换为字符串,因此,为了避免这种情况,您可以使用cast函数:

Cast Functions and Operators

  

强制转换函数和运算符可以从一个数据转换值   输入另一个。

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';