From e2eb07c61565a62ac1e4fbcac38cbb2aac23f9d6 Mon Sep 17 00:00:00 2001 From: Wayne Merricks Date: Fri, 3 Jun 2016 23:50:29 +0100 Subject: [PATCH] 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. --- lib/rdreport.cpp | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/lib/rdreport.cpp b/lib/rdreport.cpp index 8bf1b0d2..911ba2e4 100644 --- a/lib/rdreport.cpp +++ b/lib/rdreport.cpp @@ -347,20 +347,19 @@ bool RDReport::generateReport(const QDate &startdate,const QDate &enddate, QDate date=startdate.addDays(i); if(startTime()=\"")+ - date.toString("yyyy-MM-dd")+ - " "+startTime().toString("hh:mm:ss")+"\")&&"+ - "(EVENT_DATETIME<\""+date.toString("yyyy-MM-dd")+ - " "+endTime().toString("hh:mm:ss")+"\"))||"; + RDCheckDateTime(date,"yyyy-MM-dd")+ + " "+RDCheckDateTime(startTime(),"hh:mm:ss")+"\")&&"+ + "(EVENT_DATETIME<\""+RDCheckDateTime(date,"yyyy-MM-dd")+ + " "+RDCheckDateTime(endTime(),"hh:mm:ss")+"\"))||"; } else { daypart_sql+=QString("((EVENT_DATETIME<=\"")+ - date.toString("yyyy-MM-dd")+ - " "+endTime().toString("hh:mm:ss")+"\")&&"+ - "(EVENT_DATETIME>\""+date.toString("yyyy-MM-dd")+" 00:00:00))||"+ - "((EVENT_DATETIME>=\""+ - date.toString("yyyy-MM-dd")+ - " "+startTime().toString("hh:mm:ss")+"\")&&"+ - "(EVENT_DATETIME<\""+date.toString("yyyy-MM-dd")+" 23:59:59))||"; + RDCheckDateTime(date,"yyyy-MM-dd")+ + " "+RDCheckDateTime(endTime(),"hh:mm:ss")+"\")&&"+ + "(EVENT_DATETIME>\""+RDCheckDateTime(date,"yyyy-MM-dd")+" 00:00:00))||"+ + "((EVENT_DATETIME>=\""+RDCheckDateTime(date,"yyyy-MM-dd")+ + " "+RDCheckDateTime(startTime(),"hh:mm:ss")+"\")&&"+ + "(EVENT_DATETIME<\""+RDCheckDateTime(date,"yyyy-MM-dd")+" 23:59:59))||"; } } @@ -534,9 +533,9 @@ bool RDReport::generateReport(const QDate &startdate,const QDate &enddate, // Daypart Filter // 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\")&&"+ - "(EVENT_DATETIME<=\""+enddate.toString("yyyy-MM-dd")+ + "(EVENT_DATETIME<=\""+RDCheckDateTime(enddate,"yyyy-MM-dd")+ " 23:59:59\")&&"; } else { @@ -555,8 +554,8 @@ bool RDReport::generateReport(const QDate &startdate,const QDate &enddate, q1->value(1).toUInt(), q1->value(2).toInt())+ "STATION_NAME=\""+RDEscapeString(q1->value(3).toString())+"\","+ - "EVENT_DATETIME=\""+RDEscapeString(q1->value(4).toDateTime(). - toString("yyyy-MM-dd hh:mm:ss"))+"\","+ + "EVENT_DATETIME=\""+RDCheckDateTime(q1->value(4).toDateTime(), + "yyyy-MM-dd hh:mm:ss")+"\","+ QString().sprintf("EVENT_TYPE=%d,",q1->value(5).toInt())+ "EXT_START_TIME=\""+RDEscapeString(q1->value(6).toString())+"\","+ 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())+"\","+ "ARTIST=\""+RDEscapeString(q1->value(17).toString())+"\","+ "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())+ "PUBLISHER=\""+RDEscapeString(q1->value(20).toString())+"\","+ "COMPOSER=\""+RDEscapeString(q1->value(21).toString())+"\","+ @@ -923,7 +922,7 @@ void RDReport::SetRow(const QString ¶m,const QTime &value) const sql=QString().sprintf("UPDATE REPORTS SET %s=\"%s\" WHERE NAME=\"%s\"", (const char *)param, - (const char *)value.toString("hh:mm:ss"), + (const char *)RDCheckDateTime(value, "hh:mm:ss"), (const char *)report_name); q=new RDSqlQuery(sql); delete q;