Me estoy convirtiendo en un script de Unix con un SQL transact comando a un PostgreSQL comando.

Tengo una tabla con los registros que tienen un campo de last_update_time(xtime) y quiero seleccione la información de cada registro en la tabla que se ha actualizado dentro de un período seleccionado.

Decir, el tiempo actual es 05/01/2012 10:00:00 y el tiempo seleccionado es 04/01/2012 23:55:00. ¿Cómo puedo seleccionar todos los registros de una tabla en la que se han actualizado entre estas fechas. He convertido el 2 veces a los segundos en el script de Unix antes de emitir el comando psql, y se ha calculado el intervalo en segundos entre los 2 períodos.

Pensé que algo como

SELECT A,B,C FROM table
WHERE xtime BETWEEN now() - interval '$selectedtimeParm(in secs)' AND now();

Estoy teniendo problemas con la evaluación de la Parm para la selectedtimeParm – no resolver adecuadamente.

nota del Editor: yo no cambio la incorrecta utilización de los términos period, time frame, time y date para el tipo datetime timestamp porque me comentan que en mi respuesta.

OriginalEl autor Sharon | 2012-01-04

1 Comentario

  1. 32

    Lo que está mal con:

    SELECT a,b,c
    FROM   table
    WHERE  xtime BETWEEN '2012-04-01 23:55:00'::timestamp
                     AND now()::timestamp;

    Si quieres operar con un conteo de los segundos como interval:

    ...
    WHERE  xtime BETWEEN now()::timestamp - (interval '1s') * $selectedtimeParm
                     AND now()::timestamp;

    Nota, cómo he utilizado el estándar ISO 8601 formato de fecha YYYY-MM-DD h24:mi:ss que es inequívoco con cualquier configuración o DateStyle configuración.

    Tenga en cuenta también, que el primer valor de la ENTRE el constructo debe ser el más pequeño. Si usted no sabe que el valor es menor uso ENTRE SIMÉTRICA lugar.

    En su pregunta se refiere al tipo datetime timestamp como «fecha», «hora» y «período». En el título que usó el término «marcos de tiempo», que he cambiado que «las marcas de tiempo». Todos estos términos están mal. Libremente intercambiarlos hace la pregunta aún más difícil de entender.

    Eso, y el hecho de que sólo se etiquetan la pregunta psql (el problema es que difícilmente se refiere a la terminal de línea de comandos) podría ayudar a explicar por qué nadie respondió, por días. Normalmente, es una cuestión de minutos. Tuve un tiempo difícil de entender tu pregunta, tenía que leer un par de veces.

    Que usted necesita para entender los tipos de datos date, interval, time y timestamp – con o sin zona horaria. Comience por leer el capítulo «Tipos de fecha y Hora» en el manual de.

    Mensaje de Error habría recorrido un largo camino, también.

    He encontrado mi respuesta: select * from TABLA where record_time ENTRE $from_datetime Y AHORA(); Gracias

    OriginalEl autor Erwin Brandstetter

Dejar respuesta

Please enter your comment!
Please enter your name here