Различия в расчетах за неделю года между СУБД Java и multi SQL

Я должен сделать несколько отчетов и рассчитать неделю любой даты в Java и в MySQL, но у них разные алгоритмы.

Во-первых, обратите внимание, что по некоторым методам в некоторые дни в конце какого-то года наступает первая неделя следующего года. Примеры: 2012-12-31 - первая неделя 2013 года (точный год не помню, но так). Поэтому я должен рассчитать правильную неделю года даты

На яве, это основано на 2 критериях, зависящих от локали:

Первый день недели (воскресенье или понедельник)

минимальные дни в первую неделю (1 или 4)

Calendar cal = Calendar.getInstance();
int javaWeek = cal.get(Calendar.WEEK_OF_YEAR);
int weekYear = cal.getWeekYear();

В MySQL, это основывается на 2 критериях, зависит отРежим (От 0 до 7):

Первый день недели (воскресенье или понедельник) (то же самое в Java)

минимальное количество дней в первой неделе равно 4 или первая неделя содержит первый день недели

SELECT WEEK('2012-12-12', 1);
SELECT YEARWEEK('2012-12-12', 1);

А в MySQL некоторые режимы вычисляют неделю со странным результатом, например, один год имеет неделю 0 с одним днем, а другие недели имеют полные 7 дней (я думаю, что неделя 1 действительно первая неделя, а неделя 0 до недели или что-то). Я буду игнорировать эти режимы

Сценарий is: я вычисляю неделю из списка баз данных в моей системной локали (локаль с настройкой:getFirstDayOfWeek()==SUNDAY а такжеgetMinimalDaysInFirstWeek==1) в Java, и я хочу вычислить в MySQL с тем же результатом

Но я пробую все 8 режимов в MySQL, ни один не соответствует. Я потерпел неудачу, потому что в MySQL нет базы для расчета недели недели, минимальный день на первой неделе равен 1 (только в некоторых режимах с 4), поэтому я вручнуюsetMinimalDaysInFirstWeek(4) и режим 6 в MySQL совпадает с результатом в Java

(Я должен написать тест, сравнивать результаты каждый день в течение 2 лет в Java и MySQL)

ТакМое решение есть ядолжен исправить setMinimalDaysInFirstWeek(4), и еслиgetFirstDayOfWeek() понедельник, я выбираю режим 3 в MySQL, еслиgetFirstDayOfWeek() Воскресенье, я выбираю режим 6 в MySQL. Я думаю, что это просто временное решение и действительно странное.

Еще одна проблема, которую я действительно боюсь, если моя система изменится с MySQL на другую RDBMS, у нее будет другой метод, и я не могу справиться со всеми из них (примеры в Oracle не имеют функции WEEK). Так есть ли способ рассчитать неделю удовлетворяет многие RDBMS?

У меня есть идея - рассчитать неделю на одной платформе (Java или MySQL), а затем передать результат на другую:

Если перейти с Java на MySQL, я должен передать результат в строку запроса, или построить таблицу, содержащую мой результат

Если перейти с MySQL на Java, я должен написать процедуру для вызова из Java и решить проблему "найти способ рассчитать неделю удовлетворяет многие СУБД"

Но я должен вычислить массовое число дат, ни одно из них не удовлетворяет меня, у кого-нибудь есть идея, чтобы решить мои проблемы?

Ответы на вопрос(1)

Ваш ответ на вопрос