in core/src/main/java/org/apache/calcite/util/format/FormatModels.java [116:237]
static {
final Map<String, FormatElement> map = new LinkedHashMap<>();
for (FormatElementEnum fe : FormatElementEnum.values()) {
map.put(fe.toString(), fe);
}
DEFAULT = create(map);
map.clear();
map.put("%A", Day);
map.put("%a", Dy);
map.put("%B", Month);
map.put("%b", Mon);
map.put("%c",
compositeElement("The date and time representation (English);",
Dy, literalElement(" "), Mon, literalElement(" "),
DD, literalElement(" "), HH24, literalElement(":"),
MI, literalElement(":"), SS, literalElement(" "),
YYYY));
map.put("%d", DD);
map.put("%E1S", FF1);
map.put("%E2S", FF2);
map.put("%E3S", FF3);
map.put("%E4S", FF4);
map.put("%E5S", FF5);
map.put("%E*S", FF6);
map.put("%e", E);
map.put("%F",
compositeElement("The date in the format %Y-%m-%d.", YYYY, literalElement("-"), MM,
literalElement("-"), DD));
map.put("%G", IYYYY);
map.put("%g", IYY);
map.put("%H", HH24);
map.put("%I", HH12);
map.put("%j", DDD);
map.put("%M", MI);
map.put("%m", MM);
map.put("%p", PM);
map.put("%Q", Q);
map.put("%R",
compositeElement("The time in the format %H:%M",
HH24, literalElement(":"), MI));
map.put("%S", SS);
map.put("%T",
compositeElement("The time in the format %H:%M:%S.",
HH24, literalElement(":"), MI, literalElement(":"), SS));
map.put("%u", ID);
map.put("%V", IW);
map.put("%W", WW);
map.put("%x",
compositeElement("The date representation in MM/DD/YY format",
MM, literalElement("/"), DD, literalElement("/"), YY));
map.put("%Y", pctY);
map.put("%y", YY);
map.put("%Z", TZR);
map.put("HH12", HH12);
map.put("HH24", HH24);
map.put("MI", MI);
map.put("SSSSS", SSSSS);
map.put("SS", SS);
map.put("MS", MS);
map.put("FF1", FF1);
map.put("FF2", FF2);
map.put("FF3", FF3);
map.put("FF4", FF4);
map.put("FF5", FF5);
map.put("FF6", FF6);
map.put("FF7", FF7);
map.put("FF8", FF8);
map.put("FF9", FF9);
map.put("YYYY", YYYY);
map.put("YYY", YYY);
map.put("YY", YY);
map.put("Y", Y);
map.put("RRRR", YYYY);
map.put("RR", YY);
map.put("DAY", DAY);
map.put("Day", Day);
map.put("day", day);
map.put("DY", DY);
map.put("Dy", Dy);
map.put("dy", dy);
map.put("month", month);
map.put("Month", Month);
map.put("MONTH", MONTH);
map.put("mon", mon);
map.put("Mon", Mon);
map.put("MON", MON);
map.put("MM", MM);
map.put("CC", CC);
map.put("DDD", DDD);
map.put("DD", DD);
map.put("D", D);
map.put("WW", WW);
map.put("W", W);
map.put("IW", IW);
map.put("Q", Q);
map.put("AM", AMPM);
map.put("A.M.", AM_PM);
map.put("am", ampm);
map.put("a.m.", am_pm);
map.put("PM", AMPM);
map.put("P.M.", AM_PM);
map.put("pm", ampm);
map.put("p.m.", am_pm);
// Our implementation of TO_CHAR does not support TIMESTAMPTZ
// As PostgreSQL, we will skip the timezone when formatting TIMESTAMP values
map.put("TZ", TZR);
// Add lowercase mappings for formats that can also work case-insensitive.
final Map<String, FormatElement> lowercaseMap = new LinkedHashMap<>();
map.forEach((key, value) -> {
String lowerKey = key.toLowerCase(Locale.ROOT);
if (!map.containsKey(lowerKey)) {
lowercaseMap.put(lowerKey, value);
}
});
map.putAll(lowercaseMap);
BIG_QUERY = create(map);
POSTGRESQL = create(map);
}