una - restar un dia a getdate sql server



Restar 1 día de una fecha de marca de tiempo (1)

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 .

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.





casting