Topic: разница месяцев в вычислительном поле

есть вычислительное поле, в котором надо вычислить разницу месяцев.
strftime('%m', 'now') - strftime('%m', meddate)
она вычисляет разницу месяцев но не учитывает годы. Например.
now = 11/04/2019, meddate = 02/10/2017
результат = -6, а правильный результат = 18
Помогите как быть?

Re: разница месяцев в вычислительном поле

strftime('%m', 'now') - strftime('%m', meddate) + (strftime('%Y', 'now') - strftime('%Y', meddate))*12
Визуальное программирование: блог и телеграм-канал.

Re: разница месяцев в вычислительном поле

Спасибо большое. Работает. У меня вот такое выч. поле.
CASE WHEN
(strftime('%m', 'now') - strftime('%m', meddate) + (strftime('%Y', 'now') - strftime('%Y', meddate))*12) >= 6   
THEN 1 ELSE 0 END
Суть заключается в том, что каждый сотрудник проходит медосмотр каждые 6 мес. Надо чтобы в гриде было 1 если срок медосмотра либо прошел 6 мес либо был точно в срок. Например.
Иванов     25.10.2018
Петров      20.10.2018
Федоров  12.11.2009
Карпов      09.04.2018
В каждом из этих ситуаций выч. поле дает 1. Если взять сегодняшнюю дату (11.04.2019) то срок Иванова и Петрова и еще не пришли, т.е. результат должен быть:
0
0
1
1
Помогите с реализацией. Спасибо заранее.

Re: разница месяцев в вычислительном поле

Не получится у вас в SQLite с точностью до дня запросом сделать. Проще сделать на клиенте (в обработчике события таблицы onChange)  с помощью функции IncMonth ().


P.S. Можно сделать в MySQL, там есть функция  Date_Add()   https://www.w3schools.com/SQL/func_mysql_date_add.asp

Визуальное программирование: блог и телеграм-канал.

Re: разница месяцев в вычислительном поле

У меня получился. Смотрите выч. поле.
CASE WHEN
(strftime('%m', 'now') - strftime('%m', meddate) + (strftime('%Y', 'now') - strftime('%Y', meddate))*12 +
  (Case when strftime('%d', 'now') >= strftime('%d', meddate) Then 0 else -1 end)
  ) >= 6
THEN 1 ELSE 0 END