Мне нужно вести сквозную нумерацию в течении года, но в БД записи timestamp-ми помечены, а не значением года. Средствами функций mysql не хотел бы решать. Думаю в запрос добавить ограничение на диапазон timestamp-ов. Кое что погуглил, но дополнительные расширения ставить не хочется, другое не понравилось, вот свое набросал: Код (Text): function getRange($year) { return [ 'start' => mktime(0, 0, 1, 1, 1, $year), 'end' => mktime(0, 0, -1, 1, 1, $year+1) ]; } $range = getRange(2020); echo date('Y-m-d H:i:s', $range['start']); echo '<br>'; echo date('Y-m-d H:i:s', $range['end']); Вроде нормально работает? Для 2020 выдает: 2020-01-01 00:00:01 2020-12-31 23:59:59 Думаете есть недостатки?
Ну если это будет выражение типа YEAR(FROM_UNIXTIME(`created_at`)) == '2020' Это же full scan всей таблицы будет, если не ошибаюсь. Оно мне надо?
Так. Приведите-ка пример вашего "timestamp" содержащегося в таблице. А также структуру соответствующей колонки.
Ещё можно использовать возможности LAST_INSERT_ID() для формирования последовательности (нумерации) Например, в табличке одна строка может содержать timestamp начала периода, timestamp конца периода и порядковый номер документа. При переходе на новый период - добавляем строку для очередного периода.