SQL: смещение временной метки в запросе от GMT к Тихому океану - PullRequest
1 голос
/ 05 апреля 2011

Я надеюсь, что кто-то может помочь новичку в SQL (заметьте, я очень зеленый, поэтому, пожалуйста, будьте осторожны). Я пытаюсь помочь провести аудит некоторых сотрудников подрядчика в моей компании и выяснить, могут ли они доить свои часы в своих отчетных расписаниях. Они работают удаленно, поэтому мы не видим их приходить и уходить. Я запускаю запрос, чтобы увидеть первые и последние метки времени в их записях, а затем свернуть их по дням, чтобы я мог получить представление о количестве часов, которые они проводят, работая над определенной датой. Итак, мой запрос выглядит примерно так:

SELECT MIN(entry_time) AS first_time_stamp, MAX(entry_time) AS last_time_stamp, employee
FROM some_database.some_table
WHERE employee = 'Kevin' AND entry_time > '20110301'
GROUP BY DATE_FORMAT(entry_time, '%Y%m%d'), employee
;

Возвращает некоторые данные, которые выглядят следующим образом.

'2011-03-01 01:10:58', '2011-03-01 17:53:43', 'Kevin'
'2011-03-02 12:00:47', '2011-03-02 20:36:59', 'Kevin'
'2011-03-03 01:34:58', '2011-03-03 21:37:22', 'Kevin'

Пока все хорошо, за исключением того, что вы заметите, что "Кевин", кажется, работает очень долгие дни. Проблема в том, что временные метки в GMT, а мы на западном побережье США. Например, первая отметка времени была на самом деле 28 февраля и, возможно, была его последней записью в тот день.

Я провел прошлый день, пытаясь погуглить, чтобы сместить эти временные метки на -08: 00, прежде чем они будут выбраны, но продолжают появляться пустыми или запутанными (обычно оба). Кто-нибудь знает, как я мог бы сместить entry_time, чтобы он возвращал значения в зависимости от времени смещения?

Обратите внимание, что мне не нужно беспокоиться о стандартном и летнем времени, так как я просто ищу относительные отработанные часы.

Спасибо!

1 Ответ

0 голосов
/ 05 апреля 2011

Функция http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_convert-tz преобразует временные метки между часовыми поясами и должна делать то, что вам нужно. (Я предполагаю, что вы используете MySQL.)

...