Matlab有关数据库读取及时间项的设定
Matlab有关数据库的读取需下载mysql-connector-java-5.1.26-bin.jar文件放到指定位置,并修改classpath.txt相关文件,具体可网上自行查找。
看一下实例:
conn=database('photo', 'root', '123321', 'com.mysql.jdbc.Driver', 'jdbc:mysql://10.48.21.000:3306/');
curs = exec(conn,['select * from photo_act_data Where DATE_FORMAT(get_time,''%i'')%15=0 order by get_time;']);
curs = fetch(curs);
ress = curs.Data;
该例访问IP为10.48.21.000的数据库,数据库名为photo,表为photo_act_data,用户名root,密码123321,端口号为3306
根据自己需求对应修改其中若干项即可;
以上mysql语句为访问该表下的数据,其中按时间每15分钟提取并排序,返回结果ress为cell类型,熟悉matlab的并不难进一步处理。
实际应用中,很可能需要提取一个时段内数据,此时主要涉及到matlab字符串中带引号子字符串的写法问题:
数据库访问语句应变为:
curs = exec(conn, 'select * from photo_act_data Where DATE_FORMAT(get_time,''%i'')%15=0 AND get_time Between ''2019-07-17 00:00:00'' AND ''2019-07-23 23:45:00'' order by get_time;');
注意:matlab在字符串中引用单引号时,语句中该部分字符串需要用双引号。例上面的语句输出后为:
这样的定义语句a正符合mysql查询语句的写法,如果时间项提前定义为一个可变量,该如何写?如下:
ts='''2019-08-01 00:00:00''';
te=['''' datestr(now,'yyyy-mm-dd HH:MM:SS') ''''];
curs = exec(conn,['select * from photo_act_data Where DATE_FORMAT(get_time,''%i'')%15=0 AND get_time Between' ts 'AND' te 'order by get_time;']);
这个在实际应用中其实常常用到,记录!