2016-07-08 40 views
0

我執行下面的Java代碼:WEEK_OF_YEAR mismacthing和MYSQL

Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC")); 
System.out.println(cal.get(Calendar.WEEK_OF_YEAR)); 
System.out.println(cal.getTime()); 

輸出:

週五7月8 8時56分04秒BST 2016

下面是我在MYSQL中執行的命令:

select week(CURDATE()), CURDATE(); 

輸出:

27 2016年7月8日

如何年份值的兩個星期同步?我試了week(CURDATE(),0)還是一樣的結果,沒有TimeZone也試過但得到同樣的結果。

+0

僅供參考:Calendar.WEEK_OF_YEAR的定義因地區而異。完全避免這個類;現在被* java.time *類取代。 –

回答

2

「一年中的第一週」的定義是一個abitrary之一。你需要找出正在使用的MySQL定義是什麼,並使Java匹配它,或者找出默認的Java定義並使MySQL匹配它。

在Java方面,它將受到Calendar#setFirstDayOfWeekCalendar#setMinimalDaysInFirstWeek(可能是其他人,請檢查Calendar文檔)的影響。

+0

我需要通用的解決方案 –

+1

@Rajesh:**是**一個通用的解決方案:確保兩個系統之間的規則匹配。 (而且「我需要」是尋求幫助的非常糟糕的方式。) –