una sqlserver restar operaciones mas funciones fechas fecha dias con sql postgresql casting

sqlserver - Restar 1 día de una fecha de marca de tiempo



restar fechas en sql server (1)

Estoy utilizando Datagrip para Postgresql. Tengo una tabla con un campo de fecha en formato de marca de hora (ex: 2016-11-01 00:00:00) . Quiero poder:

  1. Aplicar un operador matemático para restar 1 día.
  2. Filtrarlo en base a una ventana de tiempo de hoy-130 días.
  3. mostrarlo sin la parte hh / mm / ss del sello (2016-10-31)

Consulta inicial actual:

select org_id, count(accounts) as count, ((date_at) - 1) as dateat from sourcetable where date_at <= now() - 130 group by org_id, dateat

La cláusula ((date_at)-1) en la línea 1 da como resultado:

[42883] ERROR: el operador no existe: marca de tiempo sin zona horaria - entero Sugerencia: ningún operador coincide con el nombre y el (los) tipo (s) de argumento. Es posible que necesite agregar conversiones de tipo explícito. Posición: 69

La cláusula now() genera un mensaje similar:

[42883] ERROR: el operador no existe: marca de tiempo con zona horaria - entero Sugerencia: ningún operador coincide con el nombre y el (los) tipo (s) de argumento. Es posible que necesite agregar conversiones de tipo explícito. Posición: ...

Las guías en línea para realizar conversiones de tipos son singularmente inútiles. Se aprecia la entrada.


Utilice el tipo de INTERVAL para ello. P.ej:

--yesterday SELECT NOW() - INTERVAL ''1 DAY''; --Unrelated to the question, but PostgreSQL also supports some shortcuts: SELECT ''yesterday''::TIMESTAMP, ''tomorrow''::TIMESTAMP, ''allballs''::TIME;

Luego puedes hacer lo siguiente en tu consulta:

SELECT org_id, count(accounts) AS COUNT, ((date_at) - INTERVAL ''1 DAY'') AS dateat FROM sourcetable WHERE date_at <= now() - INTERVAL ''130 DAYS'' GROUP BY org_id, dateat;

Punta adicional

Puedes añadir varios operandos. Ej .: ¿Cómo llegar el último día del mes actual?

SELECT date_trunc(''MONTH'', CURRENT_DATE) + INTERVAL ''1MONTH - 1DAY'';

Más información here y here .