Как выполнить запрос SQL с условием?
и чтобы в БД не было такого nickname, который передаётся в $nickname.
Уникальный индекс по полю nickname
чтобы запись добавилась только при условии, что прошло времени с текущей даты 24 часа
Сформулировано непонятно. Если речь идет о том что запись должна стать "видима" через 24 часа после добавления, то можно попробовать так:

Добавляем в таблицу колонку active_since
В приложении (или триггером на вставку) пишем туда нужную дату (текущую + 24 часа)
Делаем VIEW, на котором вешаем условие active_since <= NOW()
Селекты делаем не из таблицы, а из VIEW.

Но это в какой-то степени извращение. Подозреваю что вашу проблему можно решить проще.
1. Ищете самую свежую запись по date и сравниваете с текущей датой. Если разница более 24ч, то добавляете.
2. поле nickname настраиваете, чтобы было уникальным.