texto mostrar font ejemplo java datetime vertica

font - mostrar texto en jlabel java



Vertica VerticaDayTimeInterval precision se almacena incorrectamente (1)

La precisión es siempre una guía para la representación de datos. Los datos siempre se almacenan con una precisión específica, que es la precisión máxima admitida por el controlador (y el motor, por supuesto). La precisión que utilizó el usuario para insertar datos no se almacena en la base de datos, ya que solo es útil cuando se representan datos.

Los controladores JDBC clásicos admiten hasta nanosegundos (precisión de 9 dígitos) para java.sql.Timestamp .

El controlador JDBC de Vertica admite hasta microsegundos (precisión de 6 dígitos) para VerticaDateTimeInteval .

No sé cuál es exactamente tu intención cuando quieres especificar una precisión de 1, 2 o 3 en tu código de muestra, pero, en mi humilde opinión cuando creas un nuevo objeto VerticaDateTimeInterval y quieres definir un número de segundas fracciones, Tiene 2 opciones principales (que tienen sentido):

  • precisión de 3, y el número de fracciones dado sería en milisegundos
  • precisión de 6, y el número de fracciones dado sería en microsegundos.

Con una precisión de 1, el número de fracciones es en décimas de segundo. Con una precisión de 2, está en centésimas de segundo. Con una precisión de 4, está en 1 / 10000s de segundo. Con una precisión de 5, está en 1 / 100000s de segundo.

En consecuencia, cuando la base de datos devuelve el resultado de su consulta, debe informarle que el contenido entero del campo de fracciones del objeto devuelto tiene una precisión de 6 (lo que significa que es un número de microsegundos).

EDITAR: Por favor, señale si otros no están viendo este problema, y ​​estoy haciendo algo mal.

Estoy tratando de agregar filas a una tabla que contiene una sola columna VerticaDayTimeInterval a través del constructor VerticaDayTimeInterval. La precisión y los valores fraccionarios se imprimen erróneamente y se recuperan con precisión para los 6, independientemente de lo que di anteriormente.

dayInt = new VerticaDayTimeInterval(10, 10, 01, 8, 2, 1, false) ; ((VerticaPreparedStatement) pstmt).setObject(1, dayInt) ; pstmt.addBatch() ; System.out.println(dayInt.toString()); dayInt = new VerticaDayTimeInterval(10, 10, 02, 7, 3, 2, false) ; ((VerticaPreparedStatement) pstmt).setObject(1, dayInt) ; pstmt.addBatch() ; System.out.println(dayInt.toString()); dayInt = new VerticaDayTimeInterval(10, 10, 03, 6, 43, 3, false) ; ((VerticaPreparedStatement) pstmt).setObject(1, dayInt) ; pstmt.addBatch() ; System.out.println(dayInt.toString());

salida de tabla

DayInt ------------------- 10 10:03:49.000211 11 07:00:00.0002 9 09:09:05.000005 (3 rows)

recuperar e imprimir filas con el conjunto de resultados.

for (int x=1 ; rs.next() ; ++x) { VerticaDayTimeInterval dti = (VerticaDayTimeInterval)(rs.getObject(1)); System.out.println("vertica object tostring "+dti.toString()+" frac "+dti.getFraction()+" precision "+dti.getPrecision()); }

Salida

vertica object tostring 10 10:03:49.211000 frac 211000 precision 6 vertica object tostring 11 07:00:00.200000 frac 200000 precision 6 vertica object tostring 9 09:09:05.500000 frac 500000 precision 6

Mi código es similar a https://my.vertica.com/docs/7.1.x/HTML/Content/Authoring/ConnectingToHPVertica/ClientJDBC/UsingIntervalsWithJDBC.htm