Topic: Подстановка даты при его нулевом значении через запрос SQL
Столкнулся со следующей ситуацией в своем примере.
Ранее я хотел получить дату последнего статуса прибора Card. Получил.
Но если у меня прибор был только занесен в базу и еще нет у него статусов. В этом случае я получаю ошибку при формировании этой даты.
Чтобы избавиться от этого, решил, что надо внести дополнительную проверку функцией ifnull, но у меня она не работает.
Вот такой запрос работает: FrmCard.DateTimePicker2.Date:=SQLDateTimeToDateTime(SQLexecute('SELECT date (ifnull(''2020-05-25'',''2019-01-31''))'));
Или FrmCard.Edit2.Text:=SQLexecute('SELECT date(ifnull(''2020-05-25'', "2019-01-31"))');
А вот такой нет: FrmCard.DateTimePicker2.Date:=SQLDateTimeToDateTime(SQLexecute('SELECT date(ifnull(date,''2019-01-31'')) FROM status WHERE status.id_card='+ FrmCard_Full.TableGrid1.sqlValue +' ORDER BY date DESC LIMIT 1'));
Или FrmCard.Edit2.Text:=SQLexecute('SELECT date(ifnull(date, "2019-01-31")) FROM status WHERE status.id_card='+ FrmCard_Full.TableGrid1.sqlValue +' ORDER BY date DESC LIMIT 1');
В первом случая я выбираю из 2-х дат, во втором случае из запроса и даты.
Скажите, что неверно в синтаксисе использования ifnull?
В примере демонстрация для Card под именем 2.