@Override public String print(Period object, Locale locale) { return object.toString(); }
@Override public String print(Period object, Locale locale) { return object.toString(); }
@Override public Void visitIntervalYearConstant(IntervalYearExpression lExpr, StringBuilder sb) throws RuntimeException { sb.append("cast( '"); sb.append(Period.months(lExpr.getIntervalYear()).toString()); sb.append("' as INTERVALYEAR)"); return null; }
@Override public Void visitIntervalDayConstant(IntervalDayExpression lExpr, StringBuilder sb) throws RuntimeException { sb.append("cast( '"); sb.append(Period.days(lExpr.getIntervalDay()).plusMillis(lExpr.getIntervalMillis()).toString()); sb.append("' as INTERVALDAY)"); return null; }
@Nullable @Override public String toDruidExpression(RexNode rexNode, RelDataType rowType, DruidQuery query ) { final RexCall call = (RexCall) rexNode; if (call.getOperands().size() != 1) { throw new IllegalStateException("to_date() requires 1 argument, got " + call.getOperands().size()); } final String arg = DruidExpressions.toDruidExpression(call.getOperands().get(0), rowType, query); if (arg == null) { return null; } return DruidExpressions.applyTimestampFloor( arg, Period.days(1).toString(), "", timezoneId(query, call.getOperands().get(0))); } }
final TimeZone tz = timezoneId(query, call.getOperands().get(0)); return applyTimestampFormat( DruidExpressions.applyTimestampFloor(arg, Period.days(1).toString(), "", tz), YYYY_MM_DD, tz); unit = Period.months(1).toString(); } else if ("'YEAR'".equals(granularity) || "'YYYY'".equals(granularity) || "'YY'".equals(granularity)) { unit = Period.years(1).toString(); } else if ("'QUARTER'".equals(granularity) || "'Q'".equals(granularity)) { unit = Period.months(3).toString(); } else { unit = null;
ImmutableList.of( input.getExpression(), DruidExpression.stringLiteral(granularity.getPeriod().toString()), DruidExpression.numberLiteral( granularity.getOrigin() == null ? null : granularity.getOrigin().getMillis()
Assert.assertEquals( props.getProperty("druid.query.segmentMetadata.defaultHistory"), config.getDefaultHistory().toString() );
.of( druidExpression.getExpression(), DruidExpression.stringLiteral(granularity.getPeriod().toString()), DruidExpression.numberLiteral( granularity.getOrigin() == null ? null : granularity.getOrigin().getMillis()
@Override public String getAsString() { if (isNull()) { return "null"; } switch (valueType()) { case BYTES: return AccessorUtilities.bytesToString(getBytes()); case DOUBLE: return Double.toString(getDouble()); case INTEGER: return Integer.toString(getInt()); case LONG: return Long.toString(getLong()); case STRING: return "\"" + getString() + "\""; case DECIMAL: return getDecimal().toPlainString(); case PERIOD: return getPeriod().normalizedStandard().toString(); default: throw new IllegalArgumentException("Unsupported type " + valueType()); } } }
@Override public String toFormattedString(int flags) { if (getTimeLabel() != null) { return getTimeLabel(); } Period p = getJodaTimePeriod(); String s = (p != null) ? p.toString() : "PXX"; if ((flags & (FORMAT_ISO | FORMAT_TIMEX3_VALUE)) == 0) { String m = getMod(); if (m != null) { try { TimexMod tm = TimexMod.valueOf(m); if (tm.getSymbol() != null) { s = tm.getSymbol() + s; } } catch (Exception ex) { } } } return s; }
ImmutableList.of( arg, DruidExpression.fromExpression(DruidExpression.stringLiteral(truncPeriod.toString())), DruidExpression.fromExpression(DruidExpression.stringLiteral(null)), DruidExpression.fromExpression(DruidExpression.stringLiteral(plannerContext.getTimeZone().getID()))
@Override public String formatValue(Period v) { return v.toString(); }
@Override public String convertToDbString(Period beanValue) { return beanValue.toString(); }
public static String formatPeriod(Period period) { return period.toString(STANDARD_PERIOD_FORMAT); }
throw new UnsupportedOperationException("Unable to normalize as PeriodType is missing either years or months but period has a month/year amount: " + toString());
throw new UnsupportedOperationException("Unable to normalize as PeriodType is missing either years or months but period has a month/year amount: " + toString());
@Override public Void visitIntervalDayConstant(IntervalDayExpression lExpr, StringBuilder sb) throws RuntimeException { sb.append("cast( '"); sb.append(Period.days(lExpr.getIntervalDay()).plusMillis(lExpr.getIntervalMillis()).toString()); sb.append("' as INTERVALDAY)"); return null; }
@Test public void testPeriod() { Assert.assertEquals(30 * 60 * 1000, TimePeriodUtils.getMillisecondsOfPeriod(Period.parse("PT30m"))); Assert.assertEquals(30 * 60 * 1000, TimePeriodUtils.getMillisecondsOfPeriod(Period.millis(30 * 60 * 1000))); Assert.assertEquals("PT1800S", Period.millis(30 * 60 * 1000).toString()); } }