Вот один из способов сделать это - объединить все свои секунды, минуты и т. Д. В дату и сравнить с NOW()
, убедившись, что вы выполняете сравнение в одном часовом поясе.(Не проверено):
SELECT *
FROM t
LEFT JOIN y ON t.constant=y.constant
WHERE CONVERT_TZ(STR_TO_DATE(CONCAT(date,' ',hour,':',minute,' 'ampm),
'%Y-%m-%d %l:%i %p' ),
timezone,"SYSTEM") < NOW();
Если ваш час 01 - 12, а не 1-12, тогда используйте %h
вместо %l
в STR_TO_DATE
.
STR_TO_DATE
пытается соединить ваши столбцы даты и времени и преобразовать их в дату.
CONVERT_TZ(...,timezone,"SYSTEM")
преобразует эту дату из любого часового пояса, указанного в столбце timezone
, в системное время.
Затем это сравнивается с NOW()
, который всегда находится в системном времени.
В качестве отступления, возможно, вам следует создать один столбец date
, используя тип данных MySQL, поскольку арифметику намного прощеthat!
Для справки, здесь - это сводка очень полезных функций даты mysql, где вы можете прочитать о функциях, представленных в этом ответе.
Удачи!