docs: public static DateTime calciteDateTimeLiteralToJoda(final RexNode literal, final DateTimeZone timeZone)
    {
      final SqlTypeName typeName = literal.getType().getSqlTypeName();
      if (literal.getKind() != SqlKind.LITERAL || (typeName != SqlTypeName.TIMESTAMP && typeName != SqlTypeName.DATE)) {
        throw new IAE("Expected literal but got[%s]", literal.getKind());
      }
  
      if (typeName == SqlTypeName.TIMESTAMP) {
        final TimestampString timestampString = (TimestampString) RexLiteral.value(literal);
        return CALCITE_TIMESTAMP_PARSER.parse(timestampString.toString()).withZoneRetainFields(timeZone);
      } else if (typeName == SqlTypeName.DATE) {
        final DateString dateString = (DateString) RexLiteral.value(literal);
        return CALCITE_DATE_PARSER.parse(dateString.toString()).withZoneRetainFields(timeZone);
      } else {
        throw new IAE("Expected TIMESTAMP or DATE but got[%s]", typeName);
      }
    }