提交 4e742b2b authored 作者: Evgenij Ryazanov's avatar Evgenij Ryazanov

Remove broken and unexpected support of ISO week years from TO_DATE

上级 778748d1
...@@ -148,7 +148,6 @@ class ToDateTokenizer { ...@@ -148,7 +148,6 @@ class ToDateTokenizer {
switch (formatTokenEnum) { switch (formatTokenEnum) {
case SYYYY: case SYYYY:
case YYYY: case YYYY:
case IYYY:
inputFragmentStr = matchStringOrThrow(PATTERN_FOUR_DIGITS, inputFragmentStr = matchStringOrThrow(PATTERN_FOUR_DIGITS,
params, formatTokenEnum); params, formatTokenEnum);
dateNr = Integer.parseInt(inputFragmentStr); dateNr = Integer.parseInt(inputFragmentStr);
...@@ -160,7 +159,6 @@ class ToDateTokenizer { ...@@ -160,7 +159,6 @@ class ToDateTokenizer {
params.setYear(dateNr >= 0 ? dateNr : dateNr + 1); params.setYear(dateNr >= 0 ? dateNr : dateNr + 1);
break; break;
case YYY: case YYY:
case IYY:
inputFragmentStr = matchStringOrThrow(PATTERN_THREE_DIGITS, inputFragmentStr = matchStringOrThrow(PATTERN_THREE_DIGITS,
params, formatTokenEnum); params, formatTokenEnum);
dateNr = Integer.parseInt(inputFragmentStr); dateNr = Integer.parseInt(inputFragmentStr);
...@@ -204,7 +202,6 @@ class ToDateTokenizer { ...@@ -204,7 +202,6 @@ class ToDateTokenizer {
formatTokenEnum.name())); formatTokenEnum.name()));
break; break;
case YY: case YY:
case IY:
inputFragmentStr = matchStringOrThrow(PATTERN_TWO_DIGITS, inputFragmentStr = matchStringOrThrow(PATTERN_TWO_DIGITS,
params, formatTokenEnum); params, formatTokenEnum);
dateNr = Integer.parseInt(inputFragmentStr); dateNr = Integer.parseInt(inputFragmentStr);
...@@ -224,7 +221,6 @@ class ToDateTokenizer { ...@@ -224,7 +221,6 @@ class ToDateTokenizer {
params.setYear(dateNr); params.setYear(dateNr);
break; break;
case Y: case Y:
case I:
inputFragmentStr = matchStringOrThrow(PATTERN_ONE_DIGIT, params, inputFragmentStr = matchStringOrThrow(PATTERN_ONE_DIGIT, params,
formatTokenEnum); formatTokenEnum);
dateNr = Integer.parseInt(inputFragmentStr); dateNr = Integer.parseInt(inputFragmentStr);
...@@ -557,9 +553,10 @@ class ToDateTokenizer { ...@@ -557,9 +553,10 @@ class ToDateTokenizer {
YYYY(PARSLET_YEAR), YYYY(PARSLET_YEAR),
// 4-digit year with sign (- = B.C.) // 4-digit year with sign (- = B.C.)
SYYYY(PARSLET_YEAR), SYYYY(PARSLET_YEAR),
// 4-digit year based on the ISO standard (?) // 3-digit year
IYYY(PARSLET_YEAR), YYY(PARSLET_YEAR), IYY(PARSLET_YEAR), YY( YYY(PARSLET_YEAR),
PARSLET_YEAR), IY(PARSLET_YEAR), // 2-digit year
YY(PARSLET_YEAR),
// Two-digit century with with sign (- = B.C.) // Two-digit century with with sign (- = B.C.)
SCC(PARSLET_YEAR), SCC(PARSLET_YEAR),
// Two-digit century. // Two-digit century.
...@@ -612,7 +609,7 @@ class ToDateTokenizer { ...@@ -612,7 +609,7 @@ class ToDateTokenizer {
// NOT supported yet - // NOT supported yet -
// Abbreviated era name (Japanese Imperial, // Abbreviated era name (Japanese Imperial,
// ROC Official, and Thai Buddha calendars). // ROC Official, and Thai Buddha calendars).
E(PARSLET_YEAR), Y(PARSLET_YEAR), I(PARSLET_YEAR), E(PARSLET_YEAR), Y(PARSLET_YEAR),
// Quarter of year (1, 2, 3, 4; JAN-MAR = 1). // Quarter of year (1, 2, 3, 4; JAN-MAR = 1).
Q(PARSLET_MONTH), Q(PARSLET_MONTH),
// Day of week (1-7). // Day of week (1-7).
......
...@@ -1320,7 +1320,6 @@ public class TestFunctions extends TestBase implements AggregateFunction { ...@@ -1320,7 +1320,6 @@ public class TestFunctions extends TestBase implements AggregateFunction {
assertEquals(date, ToDateParser.toDate("1979 AD", "YYYY AD")); assertEquals(date, ToDateParser.toDate("1979 AD", "YYYY AD"));
assertEquals(date, ToDateParser.toDate("1979 A.D.", "YYYY A.D.")); assertEquals(date, ToDateParser.toDate("1979 A.D.", "YYYY A.D."));
assertEquals(date, ToDateParser.toDate("1979 A.D.", "YYYY BC")); assertEquals(date, ToDateParser.toDate("1979 A.D.", "YYYY BC"));
assertEquals(date, ToDateParser.toDate("1979", "IYYY"));
assertEquals(date, ToDateParser.toDate("+1979", "SYYYY")); assertEquals(date, ToDateParser.toDate("+1979", "SYYYY"));
assertEquals(date, ToDateParser.toDate("79", "RRRR")); assertEquals(date, ToDateParser.toDate("79", "RRRR"));
...@@ -1337,15 +1336,12 @@ public class TestFunctions extends TestBase implements AggregateFunction { ...@@ -1337,15 +1336,12 @@ public class TestFunctions extends TestBase implements AggregateFunction {
int y = (year / 10) * 10 + 9; int y = (year / 10) * 10 + 9;
date = ValueTimestamp.parse(y + "-" + month + "-01"); date = ValueTimestamp.parse(y + "-" + month + "-01");
assertEquals(date, ToDateParser.toDate("9", "Y")); assertEquals(date, ToDateParser.toDate("9", "Y"));
assertEquals(date, ToDateParser.toDate("9", "I"));
y = (year / 100) * 100 + 79; y = (year / 100) * 100 + 79;
date = ValueTimestamp.parse(y + "-" + month + "-01"); date = ValueTimestamp.parse(y + "-" + month + "-01");
assertEquals(date, ToDateParser.toDate("79", "YY")); assertEquals(date, ToDateParser.toDate("79", "YY"));
assertEquals(date, ToDateParser.toDate("79", "IY"));
y = (year / 1_000) * 1_000 + 979; y = (year / 1_000) * 1_000 + 979;
date = ValueTimestamp.parse(y + "-" + month + "-01"); date = ValueTimestamp.parse(y + "-" + month + "-01");
assertEquals(date, ToDateParser.toDate("979", "YYY")); assertEquals(date, ToDateParser.toDate("979", "YYY"));
assertEquals(date, ToDateParser.toDate("979", "IYY"));
// Gregorian calendar does not have a year 0. // Gregorian calendar does not have a year 0.
// 0 = 0001 BC, -1 = 0002 BC, ... so we adjust // 0 = 0001 BC, -1 = 0002 BC, ... so we adjust
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论