Added date/time checks for MySQL v5.7+ date/time nulls

Shouldn't be necessary in the daypart SQL but can't verify validity so added
checks there too.
This commit is contained in:
Wayne Merricks 2016-06-03 23:50:29 +01:00
parent d222ed9ca0
commit e2eb07c615

View File

@ -347,20 +347,19 @@ bool RDReport::generateReport(const QDate &startdate,const QDate &enddate,
QDate date=startdate.addDays(i); QDate date=startdate.addDays(i);
if(startTime()<endTime()) { if(startTime()<endTime()) {
daypart_sql+=QString("((EVENT_DATETIME>=\"")+ daypart_sql+=QString("((EVENT_DATETIME>=\"")+
date.toString("yyyy-MM-dd")+ RDCheckDateTime(date,"yyyy-MM-dd")+
" "+startTime().toString("hh:mm:ss")+"\")&&"+ " "+RDCheckDateTime(startTime(),"hh:mm:ss")+"\")&&"+
"(EVENT_DATETIME<\""+date.toString("yyyy-MM-dd")+ "(EVENT_DATETIME<\""+RDCheckDateTime(date,"yyyy-MM-dd")+
" "+endTime().toString("hh:mm:ss")+"\"))||"; " "+RDCheckDateTime(endTime(),"hh:mm:ss")+"\"))||";
} }
else { else {
daypart_sql+=QString("((EVENT_DATETIME<=\"")+ daypart_sql+=QString("((EVENT_DATETIME<=\"")+
date.toString("yyyy-MM-dd")+ RDCheckDateTime(date,"yyyy-MM-dd")+
" "+endTime().toString("hh:mm:ss")+"\")&&"+ " "+RDCheckDateTime(endTime(),"hh:mm:ss")+"\")&&"+
"(EVENT_DATETIME>\""+date.toString("yyyy-MM-dd")+" 00:00:00))||"+ "(EVENT_DATETIME>\""+RDCheckDateTime(date,"yyyy-MM-dd")+" 00:00:00))||"+
"((EVENT_DATETIME>=\""+ "((EVENT_DATETIME>=\""+RDCheckDateTime(date,"yyyy-MM-dd")+
date.toString("yyyy-MM-dd")+ " "+RDCheckDateTime(startTime(),"hh:mm:ss")+"\")&&"+
" "+startTime().toString("hh:mm:ss")+"\")&&"+ "(EVENT_DATETIME<\""+RDCheckDateTime(date,"yyyy-MM-dd")+" 23:59:59))||";
"(EVENT_DATETIME<\""+date.toString("yyyy-MM-dd")+" 23:59:59))||";
} }
} }
@ -534,9 +533,9 @@ bool RDReport::generateReport(const QDate &startdate,const QDate &enddate,
// Daypart Filter // Daypart Filter
// //
if(daypart_sql.isEmpty()) { if(daypart_sql.isEmpty()) {
sql+=QString("(EVENT_DATETIME>=\"")+startdate.toString("yyyy-MM-dd")+ sql+=QString("(EVENT_DATETIME>=\"")+RDCheckDateTime(startdate,"yyyy-MM-dd")+
" 00:00:00\")&&"+ " 00:00:00\")&&"+
"(EVENT_DATETIME<=\""+enddate.toString("yyyy-MM-dd")+ "(EVENT_DATETIME<=\""+RDCheckDateTime(enddate,"yyyy-MM-dd")+
" 23:59:59\")&&"; " 23:59:59\")&&";
} }
else { else {
@ -555,8 +554,8 @@ bool RDReport::generateReport(const QDate &startdate,const QDate &enddate,
q1->value(1).toUInt(), q1->value(1).toUInt(),
q1->value(2).toInt())+ q1->value(2).toInt())+
"STATION_NAME=\""+RDEscapeString(q1->value(3).toString())+"\","+ "STATION_NAME=\""+RDEscapeString(q1->value(3).toString())+"\","+
"EVENT_DATETIME=\""+RDEscapeString(q1->value(4).toDateTime(). "EVENT_DATETIME=\""+RDCheckDateTime(q1->value(4).toDateTime(),
toString("yyyy-MM-dd hh:mm:ss"))+"\","+ "yyyy-MM-dd hh:mm:ss")+"\","+
QString().sprintf("EVENT_TYPE=%d,",q1->value(5).toInt())+ QString().sprintf("EVENT_TYPE=%d,",q1->value(5).toInt())+
"EXT_START_TIME=\""+RDEscapeString(q1->value(6).toString())+"\","+ "EXT_START_TIME=\""+RDEscapeString(q1->value(6).toString())+"\","+
QString().sprintf("EXT_LENGTH=%d,",q1->value(7).toInt())+ QString().sprintf("EXT_LENGTH=%d,",q1->value(7).toInt())+
@ -572,7 +571,7 @@ bool RDReport::generateReport(const QDate &startdate,const QDate &enddate,
"TITLE=\""+RDEscapeString(q1->value(16).toString())+"\","+ "TITLE=\""+RDEscapeString(q1->value(16).toString())+"\","+
"ARTIST=\""+RDEscapeString(q1->value(17).toString())+"\","+ "ARTIST=\""+RDEscapeString(q1->value(17).toString())+"\","+
"SCHEDULED_TIME=\""+ "SCHEDULED_TIME=\""+
q1->value(18).toDate().toString("yyyy-MM-dd hh:mm:ss")+"\","+ RDCheckDateTime(q1->value(18).toDate(),"yyyy-MM-dd hh:mm:ss")+"\","+
QString().sprintf("START_SOURCE=%d,",q1->value(19).toInt())+ QString().sprintf("START_SOURCE=%d,",q1->value(19).toInt())+
"PUBLISHER=\""+RDEscapeString(q1->value(20).toString())+"\","+ "PUBLISHER=\""+RDEscapeString(q1->value(20).toString())+"\","+
"COMPOSER=\""+RDEscapeString(q1->value(21).toString())+"\","+ "COMPOSER=\""+RDEscapeString(q1->value(21).toString())+"\","+
@ -923,7 +922,7 @@ void RDReport::SetRow(const QString &param,const QTime &value) const
sql=QString().sprintf("UPDATE REPORTS SET %s=\"%s\" WHERE NAME=\"%s\"", sql=QString().sprintf("UPDATE REPORTS SET %s=\"%s\" WHERE NAME=\"%s\"",
(const char *)param, (const char *)param,
(const char *)value.toString("hh:mm:ss"), (const char *)RDCheckDateTime(value, "hh:mm:ss"),
(const char *)report_name); (const char *)report_name);
q=new RDSqlQuery(sql); q=new RDSqlQuery(sql);
delete q; delete q;