Дни рождения клиентов в календаре

Все вопросы/проблемы по установке и использовании.
Аватара пользователя
support
Техническая поддержка
Сообщения: 9068
Зарегистрирован: 19 окт 2014, 18:22
Имя: Харчишин Сергей
Откуда: Крым, Евпатория

Re: Дни рождения клиентов в календаре

Сообщение support »

Не мучайтесь:) Правой кнопкой на архив!
Вложения
screenshot-nimbusweb.me-2023.06.07-16_20_15.png
Аватара пользователя
alena
Сообщения: 51
Зарегистрирован: 08 ноя 2022, 09:38
Имя: Алена
Откуда: Московская область
Организация: ООО Пилкингтон Гласс

Re: Дни рождения клиентов в календаре

Сообщение alena »

support писал(а): 07 июн 2023, 16:20 Не мучайтесь:) Правой кнопкой на архив!
утром именно это не работало))) я им даже в поддержку написала... если сейчас норм, то круто, но уже и так записала через коммандер)

версию обновила, нули поставила, баг остался (( буду голову ломать, что не так, т.к. в этом куске проекта именно даты важнее всего и их надо вывести на календарь... я уже попыталась собрать дату php скриптом, да толку - в календаре нельзя выбрать поле другого типа кроме дат)

Изображение

вот, картинку вставила... еще и с 1986г какая-то ерунда...)) так же не бывает)) точный код (224 поле - Дата с календарем) -

if([224]>0,
UNIX_TIMESTAMP(ADDDATE(FROM_UNIXTIME([224],'%Y-%m-%d 00:00'), INTERVAL FROM_UNIXTIME([TODAY],'%Y')-FROM_UNIXTIME([224],'%Y') YEAR)),
"")
Аватара пользователя
support
Техническая поддержка
Сообщения: 9068
Зарегистрирован: 19 окт 2014, 18:22
Имя: Харчишин Сергей
Откуда: Крым, Евпатория

Re: Дни рождения клиентов в календаре

Сообщение support »

А попробуйте в персональной версии повторить ошибку.
Аватара пользователя
alena
Сообщения: 51
Зарегистрирован: 08 ноя 2022, 09:38
Имя: Алена
Откуда: Московская область
Организация: ООО Пилкингтон Гласс

Re: Дни рождения клиентов в календаре

Сообщение alena »

support писал(а): 07 июн 2023, 16:36 А попробуйте в персональной версии повторить ошибку.
https://pdemo.rukovoditel.pro/3.4/index ... mo_id=2274

получилось повторить
Аватара пользователя
support
Техническая поддержка
Сообщения: 9068
Зарегистрирован: 19 окт 2014, 18:22
Имя: Харчишин Сергей
Откуда: Крым, Евпатория

Re: Дни рождения клиентов в календаре

Сообщение support »

Попробуйте так:

Код: Выделить всё

UNIX_TIMESTAMP(ADDDATE(FROM_UNIXTIME([214]+3600,'%Y-%m-%d 00:00'), INTERVAL FROM_UNIXTIME([TODAY],'%Y')-FROM_UNIXTIME([214],'%Y') YEAR))
Мы к текущей дате добавили 1 час в секундах.

Как я понял проблема в том, что пхп учитывает переход на летнее время, а mysql нет.

Хранить даты в timestamp было так себе решение. С одно стороны проще работать с формулами, но с другой проблемы с временными зонами.

Возможно в будущем для дня рождения создам отдельное поле со всякими там напоминаниями об этом важном дне:)))
Аватара пользователя
alena
Сообщения: 51
Зарегистрирован: 08 ноя 2022, 09:38
Имя: Алена
Откуда: Московская область
Организация: ООО Пилкингтон Гласс

Re: Дни рождения клиентов в календаре

Сообщение alena »

support писал(а): 08 июн 2023, 06:20 Возможно в будущем для дня рождения создам отдельное поле со всякими там напоминаниями об этом важном дне:)))
Сергей, большое спасибо) помогло, хотя в целом это конечно временное решение, т.к. на следующий год и далее придется писать какую-то автоматизацию и перезаписывать даты рождения всех клиентов как вот в моем случае... надеюсь, к тому времени у вас появятся д.р. в системе и можно будет заменить старое решение на новое))
alexinc
Сообщения: 391
Зарегистрирован: 03 мар 2022, 21:40
Имя: Alex
Откуда: Россия
Контактная информация:

Re: Дни рождения клиентов в календаре

Сообщение alexinc »

support писал(а): 08 июн 2023, 06:20 Попробуйте так:

Код: Выделить всё

UNIX_TIMESTAMP(ADDDATE(FROM_UNIXTIME([214]+3600,'%Y-%m-%d 00:00'), INTERVAL FROM_UNIXTIME([TODAY],'%Y')-FROM_UNIXTIME([214],'%Y') YEAR))
Мы к текущей дате добавили 1 час в секундах.

Как я понял проблема в том, что пхп учитывает переход на летнее время, а mysql нет.

Хранить даты в timestamp было так себе решение. С одно стороны проще работать с формулами, но с другой проблемы с временными зонами.

Возможно в будущем для дня рождения создам отдельное поле со всякими там напоминаниями об этом важном дне:)))
Насколько я знаю, TZ в MySQL учитывается. В файле настроек "my.cnf" ставиться параметр timezone='Europe/Moscow'.
Так же вы можете указать time_zone в глобальных параметрах:
SET GLOBAL time_zone = 'Europe/Moscow';
Так что, с timestamp должно быть в порядке.
PS. Насколько я понимаю, работа в PHP с таймзонами реализовано через систему. В linux нужно вовремя обновлять tzdata, а в Windows - обновлением системы, потому что зоны обновляются достаточно часто. В России, насколько я помню, раз два-три меняли перевод часов и временные зоны. Нужно проверять актуальность операционки и настройку MySQL, потому что MySQL по умолчанию берез значение TZ из самой операционки. То есть по уму нужно проверить зону на операционке. Вопрос состоит в том, что операционка может быть в одном TZ, а PHP указывает на другой(в настройках Руководитель) и мы можем получить не корректное поведение, потому что в РК не реализовано как таковое поведение с разными TZ.
Аватара пользователя
support
Техническая поддержка
Сообщения: 9068
Зарегистрирован: 19 окт 2014, 18:22
Имя: Харчишин Сергей
Откуда: Крым, Евпатория

Re: Дни рождения клиентов в календаре

Сообщение support »

Да, в программе я принудительно задаю временную зону в файле includes\application_core.php

Код: Выделить всё

db_query("SET time_zone = '" . date('P') . "'",false);
Потому что сделать изменения в "my.cnf" можно только на VDS и еще нужно это уметь.
date('P') = Разница с временем по Гринвичу с двоеточием между часами и минутами
Задать 'Europe/Moscow' тоже не всегда возможно, это нужно чтоб был доп. библиотека установлена.
Аватара пользователя
Fait
Инвестор
Инвестор
Сообщения: 802
Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич

Re: Дни рождения клиентов в календаре

Сообщение Fait »

А попробуйте поле Динамическая дата со следующей формулой:

Код: Выделить всё

SELECT UNIX_TIMESTAMP(MAKEDATE(YEAR(NOW()),DAYOFYEAR(FROM_UNIXTIME([999],"%Y-%m-%d"))))
999 - номер поля с датой рождения
Аватара пользователя
alena
Сообщения: 51
Зарегистрирован: 08 ноя 2022, 09:38
Имя: Алена
Откуда: Московская область
Организация: ООО Пилкингтон Гласс

Re: Дни рождения клиентов в календаре

Сообщение alena »

Fait писал(а): 08 июн 2023, 23:05 А попробуйте поле Динамическая дата со следующей формулой:

Код: Выделить всё

SELECT UNIX_TIMESTAMP(MAKEDATE(YEAR(NOW()),DAYOFYEAR(FROM_UNIXTIME([999],"%Y-%m-%d"))))
999 - номер поля с датой рождения
Попробовала - к сожалению, нет, при д.р. 02.04.1986 выдает 01.04.2023
пока пользуюсь методом "плюс час" - вроде работает)
Ответить