Я знаю, что это старый вопрос, но я думаю, что это лучший способ продолжить ...

рабатываю приложение календаря. Он хранит время в двух форматах. В таблице есть следующие столбцыtitle, startDate, startTime, Если пользователь указывает время начала и дату начала. База данных хранит метку времени UNIX (количество секунд с начала эпохи UNIX) в столбцеstartTimeв то время как startDateNULL, Если пользователь указывает только дату начала, база данных хранит дату в форматеnnnn-mm-dd вstartDate а такжеNULL в «стартовом времени». У меня есть такая структура БД, потому что время по всему миру проще отображать, потому что разные часовые пояса имеют разное летнее время.

Я хочу выбрать события, которые происходят после указанной даты. Клиентский компьютер предоставляет серверу метку времени UNIX на начало этого дня ($unix) и дата ($date) в форматеnnnn-mm-dd выбрать правильные даты.

Проблема в том, что я не знаю, как выбрать те дни, которые происходят, как указано выше. Это решение не применимо для меня, даже если оно работает:

SELECT *
  FROM events
 WHERE startDate >= '$date'
   OR startTime >= '$unix'

Дело в том, что у меня есть несколько строк, в которых указана временная метка Unix.startTimeУ меня также есть дата вstartDate и другая причина, которую я не хочу объяснять. И из-за этого я не могу использовать решение выше.

Мне нужно какое-то решение, которое имеет оператор IF внутри предложения Where, например:

SELECT *
  FROM events
 WHERE IF(startTime = NULL, startDate >= '$date', startTime >= '$unix')

Я просто угадываю это решение. Но так ли это?

Ответы на вопрос(1)

Ваш ответ на вопрос