хранит, скажем, длительность акции (неделя, 10 дней, тп) и не хочется использовать int с секундами, чтобы не страдать с разным количеством дней в месяце и тп
есть тип interval для этого
Что-то у меня ide не нравится interval в качестве типа для колонки
Емнип внутри interval хранит те же секунды, поэтому разное количество дней в месяце им не решить.
А в чом проблема дней в месяце?
В том, что я заранее не знаю, сколько их и фраза "через календарный месяц" может растянуться на 31 день, а может на 28? Соответственно, не получится хранить длительность в секундах, надо в месяцах. Точнее, в секундах и месяцах одновременно.
Ну так храните не старт, интервал, а старт, конец, где конец по-умолчанию = старт + N дней. Вам всё равно два числа хранить придётся, начало и, либо конец, либо интервал.
Надо хранить именно длительность, чтобы потом на её основе уже считать дату окончания. К примеру, вы можете купить какой-нибудь абонемент на месяц, который даёт право на проход в кинотеатр бесплатное. И когда вы его уже купили, тогда у вас есть дата конца. А до этого у абонемента есть просто длительность, на какое время он даст вам право прохода после покупки. И в месяцах хранить не выйдет, потому что абонемент может быть на неделю, две, месяц, полгода и тп. Если бы мне тупо нужно было знать, когда что-то закончится - я бы уж наверное догадался в базе просто время окончания хранить :)
Если вам надо хранить месяцы, то и храните месяцы. В поле типа типа int. Не надо сложности городить.
А почему бы просто не использовать тип interval для этого (как уже советовали)?
Обсуждают сегодня