Diferencias de cálculo de la semana del año entre Java y RDBMS multi SQL

Tengo que hacer algunos informes y calcular la semana de cualquier fecha en Java y MySQL, pero tienen algoritmos diferentes.

En primer lugar, tenga en cuenta que, según algunos métodos, en algunos días al final de algún año es la primera semana del año siguiente. Ejemplos: 2012-12-31 es la semana 1 del año 2013 (no recuerdo el año exacto, pero así). Así que tengo que calcular la semana correcta año de una fecha

En java, se basa en 2 criterios que dependen de la configuración regional:

El primer día de la semana (domingo o lunes)

días mínimos en la primera semana (1 o 4)

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

En MySQL, se basa en 2 criterios dependen demodo (0 a 7):

El primer día de la semana (domingo o lunes) (esto es lo mismo en Java)

los días mínimos en la primera semana son 4 o la primera semana contiene el primer día de la semana

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

Y en MySQL, algunos modos calcularán la semana con resultados extraños, ejemplos, un año tiene la semana 0 con solo 1 día, y otras semanas tienen 7 días completos (creo que la semana 1 es realmente la primera semana, y la semana 0 es una semana previa o algo así). Ignoraré estos modos

El escenario es: Calculo la semana de una lista de base de fechas en la configuración regional de mi sistema (configuración regional con configuración:getFirstDayOfWeek()==SUNDAY ygetMinimalDaysInFirstWeek==1) en Java y quiero calcular en MySQL con el mismo resultado

Pero pruebo el modo 8 en MySQL, ninguno coincide. Fallé porque en MySQL no hay una base de semana de cálculo de modo en un día mínimo en la primera semana es 1 (solo algunos modos con 4), así que manualmentesetMinimalDaysInFirstWeek(4) y el modo 6 en MySQL coincide con el resultado en Java

(Tengo que escribir una prueba, comparar el resultado de cada día en 2 años en Java y MySQL)

EntoncesMi solución es decir, yodebe arreglar setMinimalDaysInFirstWeek(4), y sigetFirstDayOfWeek() es LUNES, elijo el modo 3 en MySQL, sigetFirstDayOfWeek() es DOMINGO, elijo el modo 6 en MySQL. Creo que es solo una solución temporal y realmente extraña.

Otro problema, me da mucho miedo que si mi sistema cambia de MySQL a otro RDBMS, tendrá otro método y no puedo manejarlos todos (los ejemplos en Oracle no tienen la función SEMANA). Entonces, ¿hay alguna manera de calcular la semana que satisfaga muchos RDBMS?

Tengo una idea para calcular la semana en una plataforma (Java o MySQL) y luego pasar el resultado a la otra:

Si paso de Java a MySQL, he pasado el resultado a la cadena de consulta, o construyo una tabla que contiene mi resultado

Si paso de MySQL a Java, tengo que escribir un procedimiento para llamarlo desde Java, y tengo que resolver el problema "encontrar la manera de calcular la semana satisface muchos RDBMS"

Pero debo calcular un número masivo de fechas, ninguna de estas me satisface, ¿alguien tiene idea para resolver mis problemas?

Respuestas a la pregunta(1)

Su respuesta a la pregunta