@Override public Format getFormatter(String format) { return DateUtil.getDateFormatter(format); } },
@Test public void testToCharWithFormatOnDate() throws Exception { long ts = nextTimestamp(); initPtsdbTableValues(ts); String format = "HH:mm:ss"; Format dateFormatter = DateUtil.getDateFormatter(format); String query = "SELECT HOST,TO_CHAR(DATE,'" + format + "') FROM PTSDB WHERE INST='x' AND HOST='y'"; String url = PHOENIX_JDBC_URL + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 5); // Run query at timestamp 5 Properties props = new Properties(TEST_PROPERTIES); Connection conn = DriverManager.getConnection(url, props); try { PreparedStatement statement = conn.prepareStatement(query); ResultSet rs = statement.executeQuery(); assertTrue(rs.next()); assertEquals(dateFormatter.format(D1), rs.getString(2)); } finally { conn.close(); } }
@Test public void testToDateWithFormatOnDate() throws Exception { long ts = nextTimestamp(); initPtsdbTableValues(ts); String format = "yyyy-MM-dd HH:mm:ss.S"; Format dateFormatter = DateUtil.getDateFormatter(format); String query = "SELECT HOST,TO_CHAR(DATE,'" + format + "') FROM PTSDB WHERE INST='x' AND HOST='y' and DATE=TO_DATE(?,'" + format + "')"; String url = PHOENIX_JDBC_URL + ";" + PhoenixRuntime.CURRENT_SCN_ATTRIB + "=" + (ts + 5); // Run query at timestamp 5 Properties props = new Properties(TEST_PROPERTIES); Connection conn = DriverManager.getConnection(url, props); try { PreparedStatement statement = conn.prepareStatement(query); statement.setString(1, dateFormatter.format(D1)); ResultSet rs = statement.executeQuery(); assertTrue(rs.next()); assertEquals(dateFormatter.format(D1), rs.getString(2)); } finally { conn.close(); } }
datePattern = services.getProps().get(QueryServices.DATE_FORMAT_ATTRIB, DateUtil.DEFAULT_DATE_FORMAT); int maxSize = services.getProps().getInt(QueryServices.MAX_MUTATION_SIZE_ATTRIB,QueryServicesOptions.DEFAULT_MAX_MUTATION_SIZE); Format dateTimeFormat = DateUtil.getDateFormatter(datePattern); formatters[PDataType.DATE.ordinal()] = dateTimeFormat; formatters[PDataType.TIME.ordinal()] = dateTimeFormat;
@Test public void toChar() throws Exception { List<Expression> args = Lists.newArrayList(getInvertedLiteral(date(12, 11, 2001), PDataType.DATE)); evaluateAndAssertResult(new ToCharFunction(args, FunctionArgumentType.TEMPORAL, "", DateUtil.getDateFormatter("MM/dd/yy hh:mm a")), "12/11/01 12:00 AM"); }
public StatementContext(PhoenixStatement statement, ColumnResolver resolver, List<Object> binds, Scan scan) { this.statement = statement; this.resolver = resolver; this.scan = scan; this.binds = new BindManager(binds); this.aggregates = new AggregationManager(); this.expressions = new ExpressionManager(); PhoenixConnection connection = statement.getConnection(); this.dateFormat = connection.getQueryServices().getProps().get(QueryServices.DATE_FORMAT_ATTRIB, DateUtil.DEFAULT_DATE_FORMAT); this.dateFormatter = DateUtil.getDateFormatter(dateFormat); this.dateParser = DateUtil.getDateParser(dateFormat); this.numberFormat = connection.getQueryServices().getProps().get(QueryServices.NUMBER_FORMAT_ATTRIB, NumberUtil.DEFAULT_NUMBER_FORMAT); this.tempPtr = new ImmutableBytesWritable(); this.currentTable = resolver != null && !resolver.getTables().isEmpty() ? resolver.getTables().get(0) : null; this.sequences = new SequenceManager(statement); }