Подтвердить что ты не робот

От Now() до Current_timestamp в Postgresql

В mysql я могу это сделать:

SELECT *
FROM table
WHERE auth_user.lastactivity > NOW() - 100

теперь в postgresql Я использую этот запрос:

SELECT *
FROM table
WHERE auth_user.lastactivity > CURRENT_TIMESTAMP - 100

но я получаю эту ошибку:

operator does not exist: timestamp with time zone - integer

Как я могу решить?

4b9b3361

Ответ 1

Используйте интервал вместо целого числа:

SELECT *
FROM table
WHERE auth_user.lastactivity > CURRENT_TIMESTAMP - INTERVAL '100 days'

Ответ 2

Вы также можете использовать now() в Postgres. Проблема в том, что вы не можете добавлять/вычитать целые числа из timestamp или timestamptz. Вы можете сделать так, как Марк Байерс предлагает и вычитать интервал, или использовать тип date, который позволяет вам добавлять/вычитать целые числа

SELECT now()::date + 100 AS date1, current_date - 100 AS date2

Ответ 3

Вот пример...

select * from tablename where to_char(added_time, 'YYYY-MM-DD')  = to_char( now(), 'YYYY-MM-DD' )

added_time - это имя столбца, которое я преобразовал в char для соответствия

Ответ 4

Вот что говорит MySQL о NOW():

Возвращает текущую дату и время в качестве значения в "ГГГГ-ММ-ДД ЧЧ: ММ: СС" или YYYYMMDDHHMMSS.uuuuuu формат, в зависимости от того, является ли функция используется в строковом или числовом контексте. Значение выражается в текущем часовой пояс.

mysql> SELECT NOW();
        -> '2007-12-15 23:50:26'
mysql> SELECT NOW() + 0;
        -> 20071215235026.000000

Теперь вы можете уменьшить свою умную дату на что-то меньшее...

SELECT (
 date_part('year', NOW())::text
 || date_part('month', NOW())::text
 || date_part('day', NOW())::text
 || date_part('hour', NOW())::text
 || date_part('minute', NOW())::text
 || date_part('second', NOW())::text
)::float8 + foo;

Но это было бы очень плохой идеей, что вам нужно понять, так это то, что времена и даты - это не глупые неотформатированные числа, это их собственный тип с их собственным набором функций и operators

Таким образом, время MySQL по существу позволяет рассматривать NOW() как тип dumber или переопределяет +, чтобы сделать предположение, которое я не могу найти в документах MySQL. В любом случае вы, вероятно, захотите посмотреть типы date и interval в pg.

Ответ 5

select * from table where column_date > now()- INTERVAL '6 hours';