тестов хочу, чтобы оно всегда было одинаковым.
можно попробовать запустить postgres через что-то типа этого: http://manpages.ubuntu.com/manpages/trusty/man1/faketime.1.html потом расскажите что сломается и будет ли он вообще работать :-)
Я лучше в докере запущу. Хотя там тоже не идеально, так как разные миграции выполняются в разное время в разных транзакциях и соответственно даты будут разные каждый раз. Пока думаю сделать функцию X_NOW(), которая на проде будет дёргать pg_catalog.now, а во время теста (на тестовой базе) я буду поменять её на свою, которая тупо хардкод возвращает.
а в докере можно время указать контейнеру?
> Пока думаю сделать функцию X_NOW() Так способов получить текущее время/дату куда больше, чем только вызвать now(). Т.е. всё Вы этим не закроете. См. https://www.postgresql.org/docs/current/functions-datetime.html#FUNCTIONS-DATETIME-CURRENT и https://www.postgresql.org/docs/current/datatype-datetime.html#DATATYPE-DATETIME-SPECIAL-TABLE
Я знаю. Но все запросы все равно пишу я, так что... :)
Тогда см. https://t.me/pgsql/172544
Обсуждают сегодня