Я надеюсь, что это поможет вам преобразовать оператор выбора в оператор обновления,
UPDATE md5_sums
SET only_in_old = 'X'
WHERE NOT EXISTS (SELECT *
FROM md5_sums newt
WHERE file = newt.file
and relpath = newt.relpath
and newt.starttime = 1551085649.7764235)
and starttime = 1551085580.009046
Короче говоря,
Я бы предложил использовать время на стороне сервера и дать пользователю возможность выбирать свой часовой пояс.
Вы могли бы вычислить часовые пояса по умолчанию для пользователей на основе эвристики их IP-адреса, но это чревато ошибкой.
Вы должны иметь возможность извлекать информацию о часовых поясах на стороне клиента с помощью javascript / Ajax, но как и в случае с время само по себе это тоже чревато ошибкой.
Моя рекомендация : разрешите пользователям выбирать свой часовой пояс с разумным значением по умолчанию в зависимости от того, где, по вашему мнению, находятся ваши пользователи.
С помощью JavaScript есть способ получить смещение текущего часового пояса пользователя.
new Date().getTimezoneOffset() * -1
возвращает смещение в минутах от GMT. Не сохраняйте это значение, так как оно может меняться в зависимости от летнего времени. Если он вам нужен на сервере (php), вам нужно будет захватить его для отправки.
К сожалению, спецификация HTTP не отправляет часовой пояс пользователя в качестве заголовка, а это то, что потребуется php.
]Я бы посоветовал вам запишите дату сервера в javascript. Затем введите новую дату в javascript, чтобы получить дату, установленную пользователем на его машине. Используйте разные даты.
С серверной датой вы уверены, что ваше время не смещено. Все вычисления должны производиться с использованием даты сервера.
Используйте разницу только для отображения. Это хорошо подходит для редактирования журналов, обратного отсчета и выбора сообщений типа «Доброе утро».
Если пользователь хочет, чтобы его время было чем-то другим ... Я думаю, вы должны позволить ему это.
PHP имеет как расширение PECL , так и пакет PEAR , который может выполнять поиск по GeoIP. Предполагая, что пользователь не находится за прокси или NAT какого-либо типа, база данных актуальна и точна, а адрес вообще находится в базе данных, вы можете получить часовой пояс и вычислить смещение от времени сервера.
Или вы можете просто согласиться с тем, что системные часы пользователя не на 100% точны, но обычно очень близки. Во всех основных операционных системах есть способы синхронизации своих часов с сетевыми серверами времени, большинство из которых включены по умолчанию. Если человек решил установить свой компьютер в «неправильном» часовом поясе, вероятно, по какой-то причине (он путешествует, он работает с людьми в другом часовом поясе).
Если часы вашего сервера точны (если нет, как сказал HermanD, исправьте их, если вы управляете сервером, пожаловаться, если вы этого не сделаете), но не в правильном часовом поясе, вы всегда можете использовать PHP ini_set ()
или date_default_timezone_set ()
, чтобы ваши скрипты работали в GMT, независимо от часового пояса системы.