Я пытаюсь подсчитать количество посещений определенного URL на нашем веб-сайте, анализируя наши журналы IIS с помощью Log Parser 2.2. Кажется, все работает нормально, за исключением того, что обработка временных меток меня сильно смущает.
Журналы IIS имеют все метки времени, выраженные в времени UTC. Поэтому в моем приложении я конвертирую время сервера в UTC, прежде чем подключить его к запросу. Однако, когда я пытаюсь запросить данные текущего дня, я получаю нулевой счет, несмотря на то, что вижу записи в файле журнала. Сгенерированный запрос, который я пытаюсь выполнить, чтобы получить все в течение текущего дня, выглядит примерно так (запрос выполняется 11/11/2009, и я использую время Аризоны):
SELECT COUNT(*)
FROM \\Server\IIS Logs\LogFiles\W3SVC1\u_ex*.log
WHERE
cs-method = 'GET'
AND cs(Referer) NOT LIKE '%ntorus%'
AND c-ip NOT LIKE '192%'
AND c-ip NOT LIKE '127%'
AND (
cs-uri-stem = '/'
OR cs-uri-stem = '/myurl')
AND sc-status BETWEEN 200 AND 299
AND date BETWEEN
TIMESTAMP('2009-11-11 07:00', 'yyyy-MM-dd hh:mm')
AND TIMESTAMP('2009-11-12 07:00', 'yyyy-MM-dd hh:mm')
По какой-то причине данные текущего дня пропускаются. Запрашивая более ранние даты, я получаю данные просто отлично. Почему это происходит?