Как сгруппировать по дням, когда дата хранится как длинная? - PullRequest
2 голосов
/ 11 октября 2010

Мне нужно сгруппировать запрос по дням, но дата сохраняется как длинная, как мне это сделать с SQL?

Мне нужно, чтобы это работало между несколькими поставщиками - oracle, db2, sql-server & mysql.

Длинна - это миллисекунды, генерируемые java.util.Date.getTime () - которые я не могу изменить.

1 Ответ

7 голосов
/ 11 октября 2010

Разделите столбец даты на количество базовых единиц времени в день, округляя в меньшую сторону.Например, если ваша базовая единица равна секундам, вы должны разделить столбец даты на 24 * 60 * 60 = 86400. Используйте полученное значение в группе на.

Обратите внимание, что это не удастся, если ваш источник временисинхронизируется с астрономическим временем (скажем, ваши системные часы синхронизируются с NTP), потому что в этом случае каждые несколько лет добавляется дополнительная секунда.Если это так (и обычно так), и вы должны убедиться, что результат точный, то вы должны преобразовать столбец даты в строку или в поддерживаемый БД формат даты.

Это может означать добавлениедругой столбец или представление.

...